sklearn中文链接:http://www.scikitlearn.com.cn/0.21.3/14/
sklearn官网链接:https://scikit-learn.org/stable/modules/classes.html?highlight=feature_selection#module-sklearn.feature_selection

本模块主要是对样本集进行feature_selection(特征选择)和dimensionality reduction(降温),这将会提高估计器的准确度或者增强它们在高维数据集上的性能

API

SelectKBest
sklearn.feature_selection.SelectKBest(score_func=<function f_classif>, *, k=10)

根据k次中最高的分数选择特征集,即移除那些除了评分最高的 K 个特征之外的所有特征


  • score_fun
    一个接受array类型X,y的函数,return (scores,pvalues)或者只返回scores.默认的函数只作用于分类任务中
    scores:是评测分数
    pvalues:暂时不知??
  • k:int or “all”,default=10
    选择最好的k个特征集,"all"是

示例

使用chi2作为score_fun
>>> from sklearn.datasets import load_digits
>>> from sklearn.feature_selection import SelectKBest, chi2
>>> X, y = load_digits(return_X_y=True)
>>> X.shape
(1797, 64)
>>> X_new = SelectKBest(chi2, k=20).fit_transform(X, y)
>>> X_new.shape
(1797, 20)

SelectKBest官方链接

chi2
sklearn.feature_selection.chi2(X, y)
VarianceThreshold
移除所有那些方差不满足一些阈值的特征
默认情况下,它将会移除所有的零方差特征,即那些在所有的样本上的取值均不变的特征
 sklearn.feature_selection.VarianceThreshold(threshold=0.0)

这个算法只是对features(X),并没有直接关系到outputs(Y),所以可以应用到无监督学习

Notes:允许input中有NaN

示例

假如我们有一个特征是布尔值的数据集,我们要移除那些在整个数据集中特征值为0或者为1的比例超过80%的特征。布尔特征是伯努利随机变量,变量的方差是p(1−p)p(1-p)p(1−p)

>>> from sklearn.feature_selection import VarianceThreshold
>>> X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]
>>> sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
#先fit参数X,然后transform X
>>> sel.fit_transform(X)
array([[0, 1],[1, 0],[0, 0],[1, 1],[1, 0],[1, 1]])
# 默认情况是去除方差为0的特征列
>>> X = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
>>> selector = VarianceThreshold()
>>> selector.fit_transform(X)
array([[2, 0],[1, 4],[1, 1]])

正如预期那样,其移除了第一列

RFE
即Recursive Feature Elimination,递归式特征消除

给定一个外部的估计器,可以对特征赋予一定的权重(比如,线性模型的相关系数),通过考虑越来越小的特征集合来递归的选择特征。

首先,评估其在初始的特征及和上面训练并且每一个特征的重要程度是通过一个coef_属性或者feature_importance_属性来获得。

然后,从当前的特征集中删除最不重要的特征。在经过修剪的集合上递归地重复这个过程,直到最终达到需要选择的特征数量

sklearn.feature_selection.RFE(estimator, *, n_features_to_select=None, step=1, verbose=0)

参数

  • estimator

  • n_features_to_select

  • step

  • verbose

SelectFromModel

是一个meta-transformer(元转换器),它可以用来处理任何带有coef_或feature_importance_属性的训练之后的评估器

sklearn.feature_selection.SelectFromModel(estimator, *, threshold=None, prefit=False, norm_order=1, max_features=None)

sklearn学习笔记之feature_selection(特征选择)相关推荐

  1. SKlearn学习笔记——XGBoost

    SKlearn学习笔记--XGBoost 1. 概述 1.1 xgboost库与XGB的sklearn API 1.2 XGBoost的三大板块 2. 梯度提升树 2.1 提升集成算法:重要参数 n_ ...

  2. 自然语言处理学习笔记7:特征选择方法

    当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练.通常来说,从两个方面考虑来选择特征: 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没 ...

  3. sklearn学习笔记

    1.监督学习 1.1.广义线性模型 1.1.1.普通最小二乘法 class sklearn.linear_model.LinearRegression(fit_intercept=True, norm ...

  4. python sklearn学习笔记大全(常见代码速查)

    skleran是python中常见的机器学习包,整理下笔记.方便查询. 官方文档链接:sklearn官方英文文档 常见模型 from sklearn.linear_model import Linea ...

  5. DataWhale sklearn学习笔记(一)

    线性回归 数据生成: 生成数据的思路是设定一个二维的函数(维度高了没办法在平面上画出来),根据这个函数生成一些离散的数据点,对每个数据点我们可以适当的加一点波动,也就是噪声,最后看看我们算法的拟合或者 ...

  6. sklearn学习笔记之简单线性回归

    简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项.线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误 ...

  7. sklearn学习笔记3:降维算法

    sklearn中降维算法都被包括在模块decomposition中,这个模块本质是一个矩阵分解模块 PCA使用的信息量衡量指标,就是样本方差,又称可解释性方差,方差越大,特征所带信息量就越多 PCA与 ...

  8. Sklearn学习笔记3 model_selection模块

    3 Model selection and evaluation 1 sklearn.model_selection: Model Selection 1.1 Splitter Classes(分组) ...

  9. (sklearn学习笔记)降维算法PCA与SVD的原理及用法

    听了菜菜讲的机器学习PCA及SVD所写 什么是维度? 什么是"降维"? 为什么要"降维"? PCA基本原理 sklearn中用于降维的类PCA 参数解释 n_c ...

  10. sklearn学习笔记(一)——数据预处理 sklearn.preprocessing

    python sklearn 更多 个人分类: Python 数据处理 sklearn 数据预处理 sklearn.preprocessing 查看全文 http://www.taodudu.cc/n ...

最新文章

  1. Roundgod and Milk Tea 贪心
  2. 硬货 | 一文解读完五篇重磅ACL2017 NLP论文
  3. SSM项目整合Quartz
  4. 【算法】LeetCode算法题-Maximum Subarray
  5. python requirements.txt_python_requirements.txt使用
  6. ant编译无法依赖rt.jar
  7. react+spring 记录跨域问题的解决方法
  8. [小技巧]为Atlas AutoComplete加上滚动条
  9. 计算机程序设计类论文,计算机编程论文
  10. PPT 动画模板使用技巧
  11. ImportREC重建输入表
  12. 数据库程序中按关键字查询代码
  13. 费马大定理四分之一解决
  14. 计算机网络线接法,电脑网线插座接法图文详解
  15. 2020cvpr显著性目标检测
  16. centos7 搭建三主三从 redis5.0集群
  17. 【点赞收藏】36个顶级数据分析方法与模型!
  18. 解决Python下安装unrar后仍然提示Couldn't find path to unrar library...
  19. 关于网络密码的可怕真相
  20. Prim(各种功能)

热门文章

  1. Java反射机制demo(三)—获取类中的构造函数
  2. 遍历josn的三种方式
  3. window平台下php连接Oracle
  4. 关于MDI窗体的那些问题
  5. 新版Windows Live SkyDrive Beta发布
  6. P2046 [NOI2010]海拔
  7. 从零开始一起学习SLAM | 相机成像模型
  8. django Form 效验
  9. 项目交换通知——PM(李忠)
  10. 转-从早到晚被工作追着跑? 10招提高你的工作效率