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
然后为特征重要性得分创建条形图。
现在我们已经看到了将系数用作重要性得分的示例,接下来让我们看向基于决策树的重要性得分的常见示例
4.基于决策树的特征重要性
决策树算法,比如说classification and regression trees(CART)根据Gini系数或熵的减少来提供重要性得分。这个方法也可用于随机森林和梯度提升算法。
OK.现在让我们看看相应的运行示例。
4.1基于CART的特征重要性
对于在scikit-learn中实现的特征重要性,我们可以将CART算法用于DecisionTreeRegressor和DecisionTreeClassifier类
拟合后,模型提供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
然后为特征重要性得分创建条形图。
基于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
然后为特征重要性得分创建条形图。
4.2随机森林中的特征重要性
对于在scikit-learn中实现的特征重要性,我们可以将Random Forest算法用于DecisionTreeRegressor和DecisionTreeClassifier类。
拟合后,模型提供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
然后为特征重要性得分创建条形图。
随机森林(分类)中的特征重要性
下面列出了拟合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
然后为特征重要性得分创建条形图。