特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。
主要方法(三大武器):
Filter(过滤式):VarianceThreshold
Embedded(嵌入式):正则化、决策树
Wrapper(包裹式)
这里我们我们主要过滤式,其余的后续再介绍
VarianceThreshold算法删除了所有低方差特征,这种算法认为,方差低的特征不具有代表性,比如我们想要知道什么样的男人会藏私房钱,我们选取的样本中的其中一项特征值为性别(当然真正调查的时候没有人会这么做),那么性别这一项的方差显然就是0,他对目标值并不产生影响。
sklearn特征选择API
from sklearn.feature selection import VarianceThreshold
VarianceThreshold(threshold = 0.0)
删除所有低方差特征
Variance.fit transform(X,y)
X:numpy array格式的数据[n-samples,n_features]
返回值:训练集差异低于threshold的特征将被删除。
默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征。
代码片段如下:
# from sklearn.feature_selection import VarianceThreshold def var(): """ 特征选择-删除低方差的特征值 :return:None """ var = VarianceThreshold(threshold=0.0) data = var.fit_transform( [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]] ) print(data)
结果如下
这里VarianceThreshold(threshold=0.0)中的threshold是可以选择其他大于0的数值的,该算法会删除方差值小于你设定的方差值的特征.
PCA是什么
本质:PCA(主成分分析)是一种分析、简化数据集的技术目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
作用:可以削减回归分析或者聚类分析中特征的数量
更多细节可以关注这个文章
https://zhuanlan.zhihu.com/p/77151308
作为一个调包专业,这里主要介绍一下API
PCA(n_components=None)
将数据分解为较低维数空间
PCA.fit transform(X)
X:numpy array格式的数据[n-samples,n_features]
返回值:转换后指定维度的array
def pca(): """ 主成分分析进行特征维度降维 """ # n_components一般选取0.9~0.95,即压缩为原数据量的百分之多少 pca = PCA(n_components=0.9) data = pca.fit_transform( [[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]] ) print(data)
结果如下
当特征特别多, 达到几百上千的时候,就可以使用PCA
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)