如何用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


目录
相关文章
|
26天前
|
Python
【10月更文挑战第10天】「Mac上学Python 19」小学奥数篇5 - 圆和矩形的面积计算
本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。
156 60
|
9天前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
24 3
|
20天前
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
61 1
|
24天前
|
机器学习/深度学习 移动开发 Python
【10月更文挑战第11天】「Mac上学Python 22」小学奥数篇8 - 排列组合计算
本篇将通过 Python 和 Cangjie 双语讲解如何计算排列与组合。这道题目旨在让学生学会使用排列组合公式解决实际问题,并加深对数学知识和编程逻辑的理解。
58 4
|
24天前
|
数据可视化 Python
【10月更文挑战第12天】「Mac上学Python 23」小学奥数篇9 - 基础概率计算
本篇将通过 Python 和 Cangjie 双语实现基础概率的计算,帮助学生学习如何解决简单的概率问题,并培养逻辑推理和编程思维。
45 1
|
1月前
|
机器学习/深度学习 数据格式 Python
将特征向量转化为Python代码
将特征向量转化为Python代码
|
1月前
|
机器学习/深度学习 数据格式 Python
将特征向量转化为Python代码
将特征向量转化为Python代码
|
1月前
|
存储 自然语言处理 数据处理
使用Python计算多个集合的交集详解
使用Python计算多个集合的交集详解
35 1
|
28天前
|
Python
使用python计算两个日期之前的相差天数,周数
使用python计算两个日期之前的相差天数,周数
34 0
|
29天前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
53 0
下一篇
无影云桌面