数据的降维:
简单来说就是讲特征数量减少。去掉不需要的特征。
常用方式:
- 特征选择
- 主成分分析
特征选择:
主要方法:Filter(过滤式):VarianceThreshold(方差)
Embedded(嵌入式):正则化、决策树(后期介绍)
Wrapper(包裹式)、
神经网络(后期介绍)
(一)Filter(过滤式):VarianceThreshold
从方差大小来考虑特征的数值情况
API:sklearn.feature_selection.VarianceThreshold
语法:
•
VarianceThreshold
(threshold = 0.0
)
•threshold的数字是
删除所有低于方差特征
•
Variance
.
fit_transform
(
X,y
)
•
X:numpy array
格式
的数据
[
n_samples,n_features
]
•
返回值:
训练集差异低于
threshold
的特征将被删除。
•
默认值是保留所有非零方差特征,即删除所有样本
•
中具有相同值的特征。
from sklearn.feature_selection import VarianceThreshold
def var():
"""特征选择-降维 -删除低方差的特征"""
var = VarianceThreshold(threshold=0.0)
data = var.fit_transform([[0, 2, 0, 3],
[0, 1, 4, 3],
[0, 1, 1, 3]])
print(data)
if __name__ == '__main__':
var()
运行结果:
(二)主成分分析:
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。维度会降低,但是数据也会降低。
API:sklearn. decomposition.PCA
语法:
PCA(
n_components
=None
)
将数据分解为较低维数空间
PCA
.
fit_transform
(X)
X:numpy array
格式
的数据
[
n_samples,n_features
]
返回值:转换后
指定维度
的
array
解释:
n_components = 小数: 一般 0 - 1.要求是 90% - 95%
= 整数:一般不用
代码:
from sklearn.decomposition import PCA
def pca():
"""主成分分析-特征降维"""
pca = PCA(n_components=0.9)
data = pca.fit_transform([[2, 8, 4, 5],
[6, 3, 0, 8],
[5, 4, 9, 1]])
print(data)
if __name__ == '__main__':
pca()
结果: