上一篇文章中讲到相关性判断的的卡方过滤法,本文介绍另外两种:F检验、互信息法。使用方法和作用,都与卡方过滤类似,目的都是用来探索合适的有效特征K值。
F检验
F检验,又称ANOVA,方差齐性检验,是用来捕捉每个特征与标签之间的线性关系的过滤方法。它即可以做回归也可以做分类,因此包含feature_selection.f_classif(F检验分类)和feature_selection.f_regression(F检验回归)两个类。其中F检验分类用于标签是离散型变量的数据,而F检验回归用于标签是连续型变量的数据。
和卡方过滤一样,我们希望选取p值小于0.05或者0.01的特征,这些特征和标签是显著线性相关的。而大于特定值的,我们认为没有显著线性关系,应该被删除。
from sklearn.feature_selection import f_classif F, p = f_classif(x, y) k = F.shape[0] - (p >= 0.05).sum() print(k) # 696
互信息法
互信息法,是用来捕捉特征和标签之间的任意关系(包括线性和非线性关系)的过滤方法,和F检验相似,它既可以做回归也可以做分类,并且包含两个类feature_selection.mutual_info_classif(互信息分类)和feature_selection.mutual_info_regression(互信息回归)。
不同的是,互信息法不返回p值或F值类似的统计量,它返回“每个特征与目标之间的互信息量的估计”,这个估计量在[0,1]之间取值,为0则表示两个变量独立,为1则表示两个变量完全相关。
from sklearn.feature_selection import mutual_info_classif h = mutual_info_classif(x, y) k = h.shape[0] - (h<=0).sum() print(k) # 615
本文为 陈华 原创,欢迎转载,但请注明出处:http://edu.ichenhua.cn/read/269