基于sklearn的特征选择方法
来源:互联网 发布:数据归一化后的值 编辑:程序博客网 时间:2024/05/26 02:21
在数据挖掘工作中,通常处理的是一个包含大量特征且含义未知的数据集,并基于该数据集挖掘到有用的特征。那么这里面一般是四个步骤:特征工程、特征选择、模型构造、模型融合。特征工程主要是清洗特征、删除无用特征和构造新特征,经过特征工程这个过程我们可能会得到大量的特征;而特征选择的目的就是从这大量的特征中挑选出优秀的特征,因为好的特征更能够提升模型性能,同时也通过降维达到了避免维度灾难的目的。本文主要利用sklearn 这个工具来实现常用的特征选择方法。
特征选择有两个功能:1.减少特征数量,起到降维作用,使泛化能力更强;2.减少过拟合,增强对特征和特征值之间的理解
本文主要基于sklearn 介绍两大类特征选择方法:
- 单变量特征选择方法,这里面主要包括皮尔森相关系数、最大信息系数、距离相关系数等,主要思想是衡量特征和标签变量之间的相关性;
- 基于模型的特征选择方法,这主要是指模型在训练过程中对特征的排序,如基于随机森林的特征选择、基于逻辑回归的特征选择等
1. 单变量特征选择
1.1 皮尔森相关系数
皮尔森相关系数是一种最简单的、能帮助理解特征和标签变量之间关系的方法。它衡量的是变量之间的线性相关性,其值在-1,1 之间;其中1 代表变量完全正相关,-1 代表完全负相关。
例如 a = [2,4,6,8] b = [4,8,12,16] c= [-4,-8,-12,-16] 使用scipy 来求解
import numpy as np import scipy as sc a = np.array(a) b = np.array(b) c = np.array(c) print sc.stats.pearsonr(a,b)#(1.0,0.0)第一个数代表Pearson相关系数 print sc.stats.pearsonr(a,c)#(-1.0,0.0)
Pearson相关系数的一个明显缺陷是只对线性关系敏感。如果关系是非线性的,即便两个变量具有一一对应的关系,Pearson相关性也可能会接近0。
1.2 最大信息系数
它首先寻找一种最优的离散化方式,然后把互信息取值转化为一种度量方式。区间为[0,1] 可以使用sklearn下的 minepy 去求解
1.3 距离相关系数
距离相关系数是为了克服Pearson 相关系数的弱点而生的。即是Pearson 的系数为0 ,我们仍然不能说它们是无关的,因为可能是非线性相关。而若距离相关系数为0,那可以说两变量无关。
尽管有MIC 和距离相关系数存在,但当变量之间的关系接近线性相关时,Pearson 相关系数仍然是不可替代的指标。一个原因是Pearson 相关系数计算速度快,适合于处理大规模数据;另一个原因是Pearson 相关系数的范围为[-1,1],而MIC系数为[0,1],所以它更能表达丰富的关系。
参考文献
http://dataunion.org/14072.html
- 基于sklearn的特征选择方法
- sklearn:使用GBDT选择特征
- 特征选择的方法
- 特征选择的方法
- 基于伪label的一类无监督特征选择方法
- Python机器学习库SKLearn的特征选择
- 基于sklearn的文本特征提取与分类
- 基于sklearn的文本特征提取与分类
- 基于sklearn的文本特征提取与分类
- 特征选择之基于相关性的特征选择(CFS)
- sklearn特征提取方法学习
- 常用的特征选择方法
- 特征选择的一些方法
- sklearn特征选择和分类模型
- sklearn特征选择类库使用小结
- DM02-sklearn特征选择总结与Demo
- sklearn学习:使用sklearn进行特征选择(未完)
- 基于随机森林的特征选择算法
- 快速排序
- LeetCode *** 228. Summary Ranges
- ACM
- 关于MFC中添加对话框类后类视图(class view)无显示
- STM32初学之Sys_Tick配置
- 基于sklearn的特征选择方法
- 扩展GCD
- 认识vim
- 如果链表可能有环,判断两个链表是否相交?
- 16.Java IO: PipedOutputStream && Java IO: PipedOutputStream
- Java-单机版的书店管理系统(练习设计模块和思想_系列 二 )
- 简单斐波那契数列
- struts2中如何使用servlet的总结
- oceanbase每日合并