特征选择主要从两个方面入手:
特征是否发散:特征发散说明特征的方差大,能够根据取值的差异化度量目标信息.
特征与目标相关性:优先选取与目标高度相关性的.
对于特征选择,有时候我们需要考虑分类变量和连续变量的不同.
1.过滤法:按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数选择特征
方差选择法:建议作为数值特征的筛选方法
计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征
from sklearn.feature_selection importVarianceThresholdfrom sklearn.datasets importload_irisimportpandas as pd
X,y= load_iris(return_X_y=True)
X_df= pd.DataFrame(X,columns=list("ABCD"))#建议作为数值特征的筛选方法,对于分类特征可以考虑每个类别的占比问题
ts = 0.5vt= VarianceThreshold(threshold=ts)
vt.fit(X_df)#查看各个特征的方差
dict_variance ={}for i,j inzip(X_df.columns.values,vt.variances_):
dict_variance[i]=j
#获取保留了的特征的特征名
ls=list()for i,j indict_variance.items():if j >=ts:
ls.append(i)
X_new= pd.DataFrame(vt.f