数据预处理——过滤式特征选取

VarianceThreshold

模型原型

class sklearn.feature_selection.VarianceThreshold(threshold=0.0)
参数

  • threshold:指定预期变换后属性的取值范围,指定方差的阙值,低于此阙值将被剔除

属性

  • variances_:一个数组,分别为各属性的方差

方法

  • fit(X,[,y]):从样本数据中学习方差
  • transform(X):执行属性标准化,执行特征选择(删除低于阙值的属性)
  • fit_transform(X[,y])
  • get_support([indices])
    • True:返回被选出的特征的下标
    • False:返回一个布尔值组成的数组,该数组指示哪些特征被选中
  • inverse_transform(X):逆标准化,还原成原始数据

示例

from sklearn.feature_selection import VarianceThreshold
X=[
    [100,1,2,3],
    [100,4,5,6],
    [100,7,8,9],
    [101,11,12,13]
]
selector=VarianceThreshold(1)
selector.fit(X)
print('Variances is %s'%selector.variances_)
print('After transform is \n%s'%selector.transform(X))
print('The surport is %s'%selector.get_support(True))
print('After reverse transform is \n%s'%selector.inverse_transform(selector.transform(X)))

单变量特征提取

SelectKBest

模型原型

class sklearn.feature_selection.SelectKBest(score_func=,k=10)
参数

  • score_func:给出统计指标
    • sklearn.feature_selection.f_regression:基于线性回归分析来计算统计指标。适用于回归问题
    • sklearn.feature_selection.chi2:计算卡方统计量,适用于分类问题
    • sklearn.feature_selection.f_classif:根据方差分析(ANOVA)的原理,以F-分布为依据,利用平方和与自由度所计算的祖居与组内均方估计出F值,适用于分类问题
  • k:指定要保留最佳的几个特征

属性

  • scores_
  • pvalues_:给出所有特征得分的p值

方法

  • fit(X,[,y]):从样本数据中学习统计指标得分
  • transform(X):执行特征选择
  • fit_transform(X[,y])
  • get_support([indices])
    • True:返回被选出的特征的下标
    • False:返回一个布尔值组成的数组,该数组指示哪些特征被选中
    • inverse_transform(X):根据选出来的特征还原原始数据,但对于被删除的属性值全部用0代替

SelectPercentile

模型原型

class sklearn.feature_selection.SelectPercentile(score_func=,percentile=10)
参数

  • score_func:给出统计指标
    • sklearn.feature_selection.f_regression:基于线性回归分析来计算统计指标。适用于回归问题
    • sklearn.feature_selection.chi2:计算卡方统计量,适用于分类问题
    • sklearn.feature_selection.f_classif:根据方差分析(ANOVA)的原理,以F-分布为依据,利用平方和与自由度所计算的祖居与组内均方估计出F值,适用于分类问题
  • percentile:指定要保留最佳的百分之几的特征

属性

  • scores_
  • pvalues_:给出所有特征得分的p值

方法

  • fit(X,[,y]):从样本数据中学习统计指标得分
  • transform(X):执行特征选择
  • fit_transform(X[,y])
  • get_support([indices])
    • True:返回被选出的特征的下标
    • False:返回一个布尔值组成的数组,该数组指示哪些特征被选中
  • inverse_transform(X):根据选出来的特征还原原始数据,但对于被删除的属性值全部用0代替

示例

from sklearn.feature_selection import SelectKBest,f_classif
X=[
    [1,2,3,4,5],
    [5,4,3,2,1],
    [3,3,3,3,3],
    [1,1,1,1,1]
]
y=[0,1,0,1]
print('before transform:\n',X)
selector=SelectKBest(score_func=f_classif,k=3)
selector.fit(X,y)
print('scores_:\n',selector.scores_)
print('pvalues_:',selector.pvalues_)
print('selected index:',selector.get_support(True))
print('after transform:\n',selector.transform(X))

猜你喜欢

转载自blog.csdn.net/weixin_39777626/article/details/79936169
今日推荐