Python每日一记42>>>机器学习中特征重要性feature_importances_

在进行机器学习算法中,我们常用的算法就像下面的代码形式类型
经历导入数据-预处理-建模-得分-预测
在这里插入图片描述
但是总觉得少了点什么,虽然我们建模的目的是进行预测,但是我们想要知道的另一个信息是变量的重要性,在线性模型中,我们有截距和斜率参数,但是其他机器学习算法,如决策树和随机森林,我们貌似没有这样的参数
值得庆幸的是我们有变量重要性指标feature_importances_,但是就目前而言,这个参数好像只有在决策树和以决策树为基础的算法有。但是考虑到随机森林已经能解决大部分的分类和回归问题,我们就暂且以随机森林算法为例,介绍特征重要性吧

先考虑一个简单的问题
在这里插入图片描述
在这里插入图片描述
列表中的数据和你元数据的表头是对应的,最大值为1,值越大,越重要
在这里插入图片描述
以上只是简单的算法,但是大部分时候,我们会加上交叉验证的网格搜索,那应该怎么办呢
估计算法主题其实就是best_estimator_,再追加特征重要性参数就可以了。注意在这之间要转化为Dataframe,否则会运行错误。

在这里插入图片描述
在这里插入图片描述

关于其他机器学习算法的特征重要性,大家可以自行寻找其他方法,正在寻找和学习中,需要提醒的是,特征重要性对于变量自相关性不敏感,也就是说,在变量间存在相关性的时候,特征重要性指标可能与实际想要的结果有所偏差,说白了,就是不准。

  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 很抱歉,我之前提供的代码有误,`ExplainableBoostingClassifier`类没有`feature_importances_`属性。实际上,EBM模型特征重要性是通过计算特征的分数贡献来得出的。因此,我们需要使用模型的`get_feature_importance`方法来计算特征重要性。以下是一个更新后的示例代码: ```python # 导入所需库 import numpy as np import pandas as pd from interpret.glassbox import ExplainableBoostingClassifier from interpret import show # 加载数据集 data = pd.read_csv('data.csv') X = data.drop(['target'], axis=1) y = data['target'] # 训练EBM模型 ebm = ExplainableBoostingClassifier() ebm.fit(X, y) # 计算分数 scores = ebm.predict(X) # 特征重要性分析 feature_importances = ebm.get_feature_importance(X=X, y=y, normalize=True) # 局部特征重要性分析 local_explanation = ebm.explain_local(X) # 可视化特征重要性 show(ebm.explain_global()) ``` 在上面的代码,我们使用了`get_feature_importance`方法来计算特征重要性,并将结果标准化为0到1之间的值。此外,我们还可以使用`get_raw_feature_importances`方法来获取未标准化的特征重要性分数。 ### 回答2: AttributeError: 'ExplainableBoostingClassifier'对象没有属性'feature_importances_'。 这个错误是因为在ExplainableBoostingClassifier类没有名为'feature_importances_'的属性。'feature_importances_'通常用于查看分类模型每个特征对模型结果的重要性。 ExplainableBoostingClassifier是Microsoft的一个云端机器学习模型解释工具,它的设计目的是提供对机器学习模型决策的可解释性。虽然它提供了可解释性的额外信息,但它并不直接提供'feature_importances_'属性。 如果您想查看模型每个特征重要性,可以考虑使用其他的机器学习模型,如RandomForestClassifier或GradientBoostingClassifier。这些模型通常是可解释的,并且提供'feature_importances_'属性来查看每个特征重要性。 另外,您还可以尝试使用其他特征选择方法,如方差阈值、互信息、递归特征消除等,来确定模型最重要的特征。这些方法可以帮助您在特征空间选择最具有预测能力的特征,并提高模型的性能。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值