参考
当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面来考虑特征:
- 特征是否发散:如果特征不发散,方差接近于0,也就说每个样本上特征值都差不多,这个特征对于样本区分基本无意义。
- 特征与目标的相关性:
Filter
方差选择法
使用方差选择法,要先计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征(选择波动大的特征)。使用feature_selection库的VarianceThreshold类来选择特征的代码:
from sklearn.feature_selection import VarianceThreshold
import numpy as np
#方差选择法,返回值为特征选择后的数据
print(iris.data[:,0].var())
print(iris.data[:,1].var())
print(iris.data[:,2].var())
print(iris.data[:,3].var())
VarianceThreshold(threshold=3).fit_transform(iris.data)
#只有第三列的方差大于3,因此选择出第三列
这个要和定量特征二值化区分开,定量特征二值化的核心在于设定一个阈值,样本自身的值大于阈值的赋值为1,小于等于阈值的阈值为0.
from sklearn.preprocessing import Binarizer
#二值化,阈值设置为3,返回值为二值化后的数据
Binarizer(threshold=3).fit_transform(iris.data)
相关系数法
使用相关系数法,先要计算各个特征对目标值得相关系数以及相关系数的P值。用feature_selection库的SlectKBest类结合相关系数来选择特征:
[待续]