机器学习sklearn之菜鸟入门三

来源:互联网 发布:网络技术支持工程师 编辑:程序博客网 时间:2024/05/20 20:47

特征选择

1交叉验证

2皮尔森相关系数

import numpy as np

from scipy.stats importpearsonr

np.random.seed(0)

size = 300

x = np.random.normal(0,1, size)

print "Lowernoise", pearsonr(x, x + np.random.normal(0, 1, size))

print "Highernoise", pearsonr(x, x + np.random.normal(0, 10, size))

Lower noise (0.71824836862138386,7.3240173129992273e-49)Higher noise (0.057964292079338148, 0.31700993885324746)

Pearson相关系数的一个明显缺陷是,作为特征排序机制,他只对线性关系敏感。如果关系是非线性的,即便两个变量具有一一对应的关系,Pearson相关性也可能会接近0。

x = np.random.uniform(-1, 1, 100000)
print pearsonr(x, x**2)[0]

-0.00230804707612

3 互信息和最大信息系数 Mutual information andmaximal information coefficient (MIC)

想把互信息直接用于特征选择其实不是太方便:1、它不属于度量方式,也没有办法归一化,在不同数据及上的结果无法做比较;2、对于连续变量的计算不是很方便(X和Y都是集合,x,y都是离散的取值),通常变量需要先离散化,而互信息的结果对离散化的方式很敏感。

最大信息系数克服了这两个问题。它首先寻找一种最优的离散化方式,然后把互信息取值转换成一种度量方式,取值区间在[0,1]。 minepy 提供了MIC功能。

反过头来看y=x^2这个例子,MIC算出来的互信息值为1(最大的取值)。

from minepy import MINE
m = MINE()
x = np.random.uniform(-1, 1, 10000)
m.compute_score(x, x**2)
print m.mic()

1.0

MIC的统计能力遭到了 一些质疑 ,当零假设不成立时,MIC的统计就会受到影响。在有的数据集上不存在这个问题,但有的数据集上就存在这个问题

4距离相关系数 (Distance correlation)

from scipy import spatial

x=np.random.uniform(-1,1,1000)

spatial.distance.correlation(x,x**2)

0.99133695904559382

0 0
原创粉丝点击