特征筛选

特征筛选:从原始数据中筛选出对预测变量有较大权重的特征,重点训练

特征筛选的方法有很多,今天我们简要介绍有:F检验,PCA, 递归特征消除 (RFECV), hyper-parameter。

1. F检验

导入Scikit_Learn的feature_selection库,使用F检验(f_regression)给出各个特征的F值和P值,从而筛选变量(选择F值大、P值小的特征)

from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR

rlr = RLR()
rlr.fit(x,y)
rlr.get_support() # 也可以通过.scores_方法获得各特征的分数

lr = LR()
lr.fit(x, y )
lr.score(x, y)# 给出模型的平均正确率

逻辑回归本质上还是一种线性模型,因此这里的有效性检验本质上在做线性相关性检验,选出来的变量说明跟结果有较强的线性相关性。但是被筛选掉的变量不一定就跟结果没有关系,因为他们之间有可能存在非线性关系。对于非线性关系的变量筛选方法包括:决策树、神经网络等。

2. PCA

主成分分析: 用较少的变量去解释数据中的大部分变量,即将许多相关性很高的变量转化成彼此独立或不相关的变量。
主成分分析是一种用于连续属性的数据降维方法,它构造一个正交变换,新空间的基底去除了原始空间基底下数据的相关性,只需少数新变量就能解释原始数据中的大部分变量。这些能代表大部分特征的变量就叫主成分,用它们来建模。

from sklearn.decomposition import PCA
pca = PCA()

PCA(n_components=None, copy=True, whiten = False)
参数说明:

  • n_components: 要保留的主成分个数,默认为None,保留全部
  • copy: 训练时是否保留原始数据一份 ,默认True
  • whiten: 白化,使每个特征具有相同的方差,默认False
  from sklearn.decomposition import PCA
  pca = PCA()
  pca.fit(data)
  pca.components_ # 各个模型的特征向量
  pca.explained_variance_ratio_ #各个特征的方差百分比(贡献率)

3. 递归特征消除

RFE的主要思想是反复构建模型(如SVM和回归)然后选出最好的或最差的特征,把选出来的特征放一边,然后在剩余的特征上重复过程,直到遍历所有特征。这个过程中特征被消除的次序就是特征的排序。因此这是一种寻找最优特征子集的贪心算法。sklearn提供了RFECV,可以通过交叉验证来对特征进行排序。

  from sklearn.tree import DecisionTreeClassifier as DTC # 以决策树为例
  from sklearn.model_selection import RFECV
  
  RFECV(DTC(),  step=1, cv=N, scoring='accuracy')
     # step=1, 每次迭代消除1个特征

该函数返回一个调优后的模型,可以应用fit(), fit_transform()predict()等等方法,还有诸如n_features_, support_, ranking_等属性。
这个模型会自动把传入的X修整为调优后数据的特征规格,然后再预测。

4. hyper-parameter

主要用到GridSearchCV()函数。

from sklearn.tree import DecisionTreeClassifier as DTC # 以决策树为例
from sklearn.model_selection import GridSearchCV
para_grid = {
    'criterion': ['gini', 'entropy'],
    'max_depth': [2, 4, 6, 8],
    'random_state': [0],
    'max_leaf_nodes': [10, 50, 100]
    }
tuned_model = GridSearchCV(DTC(), param_grid = para_grid,         
                            scoring='roc-auc', cv=N)

简单地说,就是对模型应用para_grid中的不同参数组合,按criterion标准选择最优特征,返回模型

小白探路,难免有误,希望大家指正,谢谢你的浏览~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 冗杂的特征虽然不会影响到模型性能,不过却使得CPU的计算做了无用功。比如,主成分分析主要用于去除多余的那些线性相关...
    idatadesign阅读 1,679评论 0 0
  • 理论 特征筛选的作用 样本中的有些特征是所谓的“优秀特征”,使用这些特征可以显著的提高泛化能力。而有些特征在样本类...
    月见樽阅读 1,434评论 0 1
  • 0 关于本文 ​ 主要内容和结构框架由@jasonfreak--使用sklearn做单机特征工程提供,其中夹杂...
    mrlevo520阅读 21,485评论 4 61
  • 看着电脑右下角的日期,惊觉一年已经走到尾声,2017年已经近在咫尺。 心里一个声音响起:又到了回顾总结计划展望的时...
    柴门内外阅读 571评论 9 12
  • 再穷,不要欠钱玩消失。 再难,不要说话不算数。 再有事,把话说明白不要不接电话。 堂堂正正做人,明明白白做事。 永...
    德城IT战狼阅读 416评论 0 0