对多变量统计分类、建模问题,人们经常关心的一个问题是:如此多的变量,哪些对函数分类的影响是最重要的,哪些可以忽略不计?这对控制问题的复杂度,建立鲁棒(Robustic)模型非常重要。对此类问题的求解,sklearn.feature_selection包提供了较完整的方案。
1.F检验选择法
鸢尾花数据集中有4个变量,已知这4个变量对鸢尾花的分类有显著作用。现在在原有的4个特征的基础上,增加20个随机生成的特征。很明显,新增的随机特征对鸢尾花的分类是没有意义的。现在,我们希望通过对变量的显著性分析,判断出对鸢尾花分类起关键作用的4个特征。
对分类问题,sklearn.feature_selection中提供的f_classif用于判断变量对分类的显著性,对回归建模问题,则可以使用f_regression判断变量的显著性。而配合f检验值计算,sklearn.feature_selection的SelectPercentile类可用于快速获取对函数有显著作用的变量。
对鸢尾花分类有显著作用的变量的判别代码如下:
程序:F检验选择变量
程序运行的结果如图8.4.3所示:
图8.4.3 变量选择结果
从图中发现,变量选择法的得分最大的4个特征,正是原始数据集中的4个变量。
2.随机森林选择法
sklearn中的每种森林机器学习算法,经过训练后,都有一个方法获得变量的重要性,它就是feature_importances_,经典的语句为:
后续对std变量作图,即可观察变量的重要性。
下面仍以鸢尾花数据集为例,在原有4个变量的基础上增加20列随机噪声。以随机森林选择法计算24个变量的重要性。程序代码如下,所得计算结果如图8.4.4所示:(www.daowen.com)
图8.4.4 随机森林计算得到的变量的重要性
程序:随机森林选择变量
程序计算结果如下所示:
特征排序:
1.特征3(0.263369)
2.特征2(0.262983)
3.特征0(0.089232)
4.特征1(0.066007)
5.特征10(0.021615)
6.特征7(0.019682)
7.特征19(0.018537)
……
从计算结果可以看出,随机森林也将4个有效变量选择了出来,且标注了变量的序号,结论与F检验选择的变量一致。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。