如何用Python计算特征重要性?(二)

简介: 如何用Python计算特征重要性?(二)

3.2 Logistic回归特征重要性

就像线性回归模型一样,我们也可以在回归数据集中拟合出一个LogisticRegression模型,并检索coeff_属性。这些系数可以为粗略特征重要性评分提供依据。该模型假设输入变量具有相同的比例或者在拟合模型之前已被按比例缩放。

下面列出了针对特征重要性的Logistic回归系数的完整示例。

1. # logistic regression for feature importance  
2. from sklearn.datasets import make_classification  
3. from sklearn.linear_model import LogisticRegression  
4. from matplotlib import pyplot  
5. # define dataset  
6. X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=5, random_state=1)  
7. # define the model  
8. model = LogisticRegression()  
9. # fit the model  
10.model.fit(X, y)  
11.# get importance  
12.importance = model.coef_[0]  
13.# summarize feature importance  
14.for i,v in enumerate(importance):  
15.    print('Feature: %0d, Score: %.5f' % (i,v))  
16.# plot feature importance  
17.pyplot.bar([x for x in range(len(importance))], importance)  
18.pyplot.show()

运行示例,拟合模型,然后输出每个特征的系数值。

回想一下,这是有关0和1的分类问题。请注意系数既可以为正,也可以为负。正数表示预测类别1的特征,而负数表示预测类别0的特征。

从这些结果,至少从我所知道的结果中,无法清晰的确定出重要和不重要特征。

1. Feature: 0, Score: 0.16320  
2. Feature: 1, Score: -0.64301  
3. Feature: 2, Score: 0.48497  
4. Feature: 3, Score: -0.46190  
5. Feature: 4, Score: 0.18432  
6. Feature: 5, Score: -0.11978  
7. Feature: 6, Score: -0.40602  
8. Feature: 7, Score: 0.03772  
9. Feature: 8, Score: -0.51785  
10.Feature: 9, Score: 0.26540

然后为特征重要性得分创建条形图。

image.png


现在我们已经看到了将系数用作重要性得分的示例,接下来让我们看向基于决策树的重要性得分的常见示例

4.基于决策树的特征重要性

决策树算法,比如说classification and regression trees(CART)根据Gini系数或熵的减少来提供重要性得分。这个方法也可用于随机森林和梯度提升算法。

OK.现在让我们看看相应的运行示例。

4.1基于CART的特征重要性

对于在scikit-learn中实现的特征重要性,我们可以将CART算法用于DecisionTreeRegressorDecisionTreeClassifier

拟合后,模型提供feature_importances_属性,可以访问该属性以检索每个输入特征的相对重要性得分。

让我们看一个用于回归和分类的示例。

基于CART(回归)的特征重要性

下面列出了拟合DecisionTreeRegressor和计算特征重要性得分的完整示例。

1. # decision tree for feature importance on a regression problem  
2. from sklearn.datasets import make_regression  
3. from sklearn.tree import DecisionTreeRegressor  
4. from matplotlib import pyplot  
5. # define dataset  
6. X, y = make_regression(n_samples=1000, n_features=10, n_informative=5, random_state=1)  
7. # define the model  
8. model = DecisionTreeRegressor()  
9. # fit the model  
10.model.fit(X, y)  
11.# get importance  
12.importance = model.feature_importances_  
13.# summarize feature importance  
14.for i,v in enumerate(importance):  
15.    print('Feature: %0d, Score: %.5f' % (i,v))  
16.# plot feature importance  
17.pyplot.bar([x for x in range(len(importance))], importance)  
18.pyplot.show()

运行示例,拟合模型,然后输出每个特征的系数值。

结果表明,这十个特征中的三个可能对预测很重要。

1. Feature: 0, Score: 0.00294  
2. Feature: 1, Score: 0.00502  
3. Feature: 2, Score: 0.00318  
4. Feature: 3, Score: 0.00151  
5. Feature: 4, Score: 0.51648  
6. Feature: 5, Score: 0.43814  
7. Feature: 6, Score: 0.02723  
8. Feature: 7, Score: 0.00200  
9. Feature: 8, Score: 0.00244  
10.Feature: 9, Score: 0.00106

然后为特征重要性得分创建条形图。

image.png


基于CART(分类)的特征重要性

下面列出了拟合DecisionTreeClassifier和计算特征重要性得分的完整示例

1. # decision tree for feature importance on a classification problem  
2. from sklearn.datasets import make_classification  
3. from sklearn.tree import DecisionTreeClassifier  
4. from matplotlib import pyplot  
5. # define dataset  
6. X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=5, random_state=1)  
7. # define the model  
8. model = DecisionTreeClassifier()  
9. # fit the model  
10.model.fit(X, y)  
11.# get importance  
12.importance = model.feature_importances_  
13.# summarize feature importance  
14.for i,v in enumerate(importance):  
15.    print('Feature: %0d, Score: %.5f' % (i,v))  
16.# plot feature importance  
17.pyplot.bar([x for x in range(len(importance))], importance)  
18.pyplot.show()

运行示例,拟合模型,然后输出每个特征的系数值。

结果表明,这十个特征中的四个可能对预测很重要。

1. Feature: 0, Score: 0.01486  
2. Feature: 1, Score: 0.01029  
3. Feature: 2, Score: 0.18347  
4. Feature: 3, Score: 0.30295  
5. Feature: 4, Score: 0.08124  
6. Feature: 5, Score: 0.00600  
7. Feature: 6, Score: 0.19646  
8. Feature: 7, Score: 0.02908  
9. Feature: 8, Score: 0.12820  
10.Feature: 9, Score: 0.04745

然后为特征重要性得分创建条形图。

image.png


4.2随机森林中的特征重要性

对于在scikit-learn中实现的特征重要性,我们可以将Random Forest算法用于DecisionTreeRegressorDecisionTreeClassifier类。

拟合后,模型提供feature_importances_属性,可以访问该属性以检索每个输入特征的相对重要性得分。

这种方法也可以与装袋和极端随机树(extraTree)算法一起使用。

让我们看一个用于回归和分类的示例。

随机森林(回归)中的特征重要性

下面列出了拟合RandomForestRegressor和计算特征重要性得分的完整示例

1. # random forest for feature importance on a regression problem  
2. from sklearn.datasets import make_regression  
3. from sklearn.ensemble import RandomForestRegressor  
4. from matplotlib import pyplot  
5. # define dataset  
6. X, y = make_regression(n_samples=1000, n_features=10, n_informative=5, random_state=1)  
7. # define the model  
8. model = RandomForestRegressor()  
9. # fit the model  
10.model.fit(X, y)  
11.# get importance  
12.importance = model.feature_importances_  
13.# summarize feature importance  
14.for i,v in enumerate(importance):  
15.    print('Feature: %0d, Score: %.5f' % (i,v))  
16.# plot feature importance  
17.pyplot.bar([x for x in range(len(importance))], importance)  
18.pyplot.show()

运行示例,拟合模型,然后输出每个特征的系数值。

结果表明,这十个特征中的两个或三个可能对预测很重要。

1. Feature: 0, Score: 0.00280  
2. Feature: 1, Score: 0.00545  
3. Feature: 2, Score: 0.00294  
4. Feature: 3, Score: 0.00289  
5. Feature: 4, Score: 0.52992  
6. Feature: 5, Score: 0.42046  
7. Feature: 6, Score: 0.02663  
8. Feature: 7, Score: 0.00304  
9. Feature: 8, Score: 0.00304  
10.Feature: 9, Score: 0.00283

然后为特征重要性得分创建条形图。

image.png


随机森林(分类)中的特征重要性

下面列出了拟合RandomForestClassifier和计算特征重要性得分的完整示例

1. # random forest for feature importance on a classification problem  
2. from sklearn.datasets import make_classification  
3. from sklearn.ensemble import RandomForestClassifier  
4. from matplotlib import pyplot  
5. # define dataset  
6. X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=5, random_state=1)  
7. # define the model  
8. model = RandomForestClassifier()  
9. # fit the model  
10.model.fit(X, y)  
11.# get importance  
12.importance = model.feature_importances_  
13.# summarize feature importance  
14.for i,v in enumerate(importance):  
15.    print('Feature: %0d, Score: %.5f' % (i,v))  
16.# plot feature importance  
17.pyplot.bar([x for x in range(len(importance))], importance)  
18.pyplot.show()

运行示例,拟合模型,然后输出每个特征的系数值。

结果表明,这十个特征中的两个或三个可能对预测很重要。

1. Feature: 0, Score: 0.06523  
2. Feature: 1, Score: 0.10737  
3. Feature: 2, Score: 0.15779  
4. Feature: 3, Score: 0.20422  
5. Feature: 4, Score: 0.08709  
6. Feature: 5, Score: 0.09948  
7. Feature: 6, Score: 0.10009  
8. Feature: 7, Score: 0.04551  
9. Feature: 8, Score: 0.08830  
10.Feature: 9, Score: 0.04493

然后为特征重要性得分创建条形图。

image.png


目录
相关文章
|
12天前
|
分布式计算 负载均衡 并行计算
Python 分布式计算框架 PP (Parallel Python):集群模式下的实践探索
该文介绍了使用Parallel Python (PP) 在两台物理机上构建分布式计算集群的经验。PP是一个轻量级框架,旨在简化Python代码在多处理器系统和集群中的并行执行。文中通过设置子节点的IP、端口和密钥启动PP服务器,并在主节点创建PP实例进行负载均衡。实验使用官方的质数和计算示例,显示PP在集群模式下能有效利用多台机器的多核CPU,实现计算效率的显著提升。未来,作者计划进一步研究PP在更复杂任务和大规模集群中的应用潜力。
|
12天前
|
机器学习/深度学习 算法 Serverless
利用无穷级数逼近计算幂运算与开根号——Python实现
使用泰勒级数逼近法,本文介绍了如何用Python计算特殊幂运算,包括分数次幂和开根号。通过定义辅助函数,如`exp`、`getN_minus_n`、`multi`和`getnum`,实现了计算任意实数次幂的功能。实验结果显示,算法能有效计算不同情况下的幂运算,例如`0.09^2`、`1^2`、`0.25^2`、`0.09^(0.5)`、`1^(0.5)`和`0.25^(0.5)`。虽然精度可能有限,但可通过调整迭代次数平衡精度与计算速度。
|
23天前
|
分布式计算 并行计算 Java
如何选择适合的Python并行计算库
如何选择适合的Python并行计算库
20 3
|
1月前
|
算法 程序员 Python
年底工资总结,实例教你用Python计算个税 依法纳税做好公民(1)
年底工资总结,实例教你用Python计算个税 依法纳税做好公民(1)
|
25天前
|
存储 开发者 Python
Python函数的基本使用及其重要性
Python函数的基本使用及其重要性
11 0
|
1月前
|
数据采集 数据挖掘 关系型数据库
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南
|
1月前
|
Python
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交
|
1月前
|
存储 算法 Python
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交(2)
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交(2)
|
1月前
|
存储 算法 Python
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交(1)
【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交(1)
|
1月前
|
Python
python计算线段角度
python计算线段角度
17 0