理论教育 Python计算思维:变量重要性与选择

Python计算思维:变量重要性与选择

时间:2023-11-22 理论教育 版权反馈
【摘要】:对鸢尾花分类有显著作用的变量的判别代码如下:程序:F检验选择变量程序运行的结果如图8.4.3所示:图8.4.3变量选择结果从图中发现,变量选择法的得分最大的4个特征,正是原始数据集中的4个变量。以随机森林选择法计算24个变量的重要性。从计算结果可以看出,随机森林也将4个有效变量选择了出来,且标注了变量的序号,结论与F检验选择的变量一致。

Python计算思维:变量重要性与选择

对多变量统计分类、建模问题,人们经常关心的一个问题是:如此多的变量,哪些对函数分类的影响是最重要的,哪些可以忽略不计?这对控制问题的复杂度,建立鲁棒(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检验选择的变量一致。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈