上一篇有说到特征工程的一些工具使用,但是我们要知道,并不是我们处理完全部我们能够想到的特征后,扔进model就可以了,因为我们并不知道所得到的这些新特征是否有用,换句话说,这些特征的重要性到底有多大?甚至很多时候,一些特征对我们的target并没有很好的反映或是产生负影响。此时我们需要进行一项必要的工作:特征选择
1 特征选择
我们主要关心以下几个问题:
1、特征差异性。也就是一列特征值若几乎没有什么变化,那么这个特征对模型并没有什么作用。
2、相关性大小。也就是该维特征与target的相互作用有多大。
2 过滤法
1、方差判别
给定阈值,排除那些方差低于阈值的特征。
from sklearn.feature_selection import VarianceThreshold
#方差选择法,返回值为特征选择后的数据
#参数threshold为方差的阈值
VarianceThreshold(threshold=3).fit_transform(data.data)
2、相关性系数选择
计算各个特征对target的相关系数,常用的就是皮尔逊相关系数P来做衡量,给定我们想筛选出来的特征个数即可。
from sklearn.feature_selection import SelectKBest
from scipy.stats import pearsonr
#选择K个最好的特征,返回选择特征后的数据
#第一个参数为计算评估特征是否好的函数,该函数输入特征矩阵和目标向量,输出二元组(评分,P值)的数组,数组第i项为第i