使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征 。当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用 。
from sklearn.feature_selection import VarianceThresholdX = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]sel = VarianceThreshold(threshold=(.8 * (1 - .8)))sel.fit_transform(X)array([[0, 1],[1, 0],[0, 0],[1, 1],[1, 0],[1, 1]])
5.1.2 单变量特征选择 ()
单变量特征选择的原理是分别单独的计算每个变量的某个统计指标,根据该指标来判断哪些指标重要,剔除那些不重要的指标 。而这种指标的设定可以用卡方检验,相关系数等 。
对于分类问题(y离散),可采用:卡方检验,互信息等 。
对于回归问题(y连续),可采用:皮尔森相关系数,最大信息系数等 。
这种方法比较简单,易于运行,易于理解,通常对于理解数据有较好的效果(但对特征优化、提高泛化能力来说不一定有效) 。
5.1.2.1 卡方(Chi2)检验
卡方检验是检验定性自变量对定性因变量的相关性 。分类问题
我们可以对样本进行一次chi2 测试来选择最佳的两项特征from sklearn.datasets import load_irisfrom sklearn.feature_selection import SelectKBestfrom sklearn.feature_selection import chi2iris = load_iris()X, y = iris.data, iris.targetX.shape(150, 4)X_new = SelectKBest(chi2, k=2).fit_transform(X, y)X_new.shape(150, 2)
5.1.2.2 相关系数
相关系数的介绍在探索性数据分析中有所提到 。
速度快、易于计算,经常在拿到数据(经过清洗和特征提取之后的)之后第一时间就执行 。Scipy的方法能够同时计算 相关系数 和p-value 。
import numpy as npfrom scipy.stats import pearsonrnp.random.seed(0)size = 300x = np.random.normal(0, 1, size)pearsonr(x, y)的输入为特征矩阵和目标向量print("Lower noise", pearsonr(x, x + np.random.normal(0, 1, size)))print("Higher noise", pearsonr(x, x + np.random.normal(0, 10, size)))输出为二元组(sorce, p-value)的数组Lower noise (0.71824836862138386, 7.3240173129992273e-49)Higher noise (0.057964292079338148, 0.31700993885324746)
-learn提供的方法能够批量计算特征的和p-value,非常方便,参考的。
5.1.2.3 互信息和最大信息系数
互信息为随机变量X与Y之间的互信息I(X;Y)为单个事件之间互信息的数学期望)也是评价定性自变量对定性因变量的相关性的 。
互信息直接用于特征选择其实不是太方便:
它不属于度量方式,也没有办法归一化,在不同数据及上的结果无法做比较;对于连续变量的计算不是很方便(X和Y都是集合,x,y都是离散的取值),通常变量需要先离散化,而互信息的结果对离散化的方式很敏感 。
最大信息系数克服了这两个问题 。它首先寻找一种最优的离散化方式,然后把互信息取值转换成一种度量方式,取值区间在[0,1] 。提供了MIC功能 。
from minepy import MINEm = MINE()x = np.random.uniform(-1, 1, 10000)m.compute_score(x, x**2)print(m.mic())1.0
但MIC的统计能力遭到了 一些质疑,当零假设不成立时,MIC的统计就会受到影响 。在有的数据集上不存在这个问题,但有的数据集上就存在这个问题 。
5.1.6 距离相关系数
距离相关系数是为了克服相关系数的弱点而生的 。在x和x2这个例子中,即便相关系数是0,我们也不能断定这两个变量是独立的(有可能是非线性相关);但如果距离相关系数是0,那么我们就可以说这两个变量是独立的 。距离相关系数实现
尽管有 MIC 和 距离相关系数存在,但当变量之间的关系接近线性相关的时候,相关系数仍然是不可替代的 。
- 数据挖掘分类算法的学习总结
- 著名水利工程家李冰的功绩有哪些?
- 刚面完阿里蚂蚁金服的大数据工程师,有话说
- 基于QR分解迭代求解方阵特征值和特征向量
- matlab实现 特征值分解用于数据压缩
- 四 数据挖掘实战分享:财政收入影响因素分析及预测
- 计算机视觉的深度学习实战四:图像特征提取
- 第三、BFMatcher与Flann特征点匹配方法效果对比
- “啤酒与尿布”--零售业的购物篮分析包含了哪些数据挖掘算法?
- keil MDK 新建项目教程