我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文讨探xgboost的稍稍基础一些的内容:“特征重要性”。对应到数据集里面,就是特征特性features。对于任何一个模型的预测结果来说,它都是对这些特征进行各种分析得出的结论。这些特征都有一个重要性的说法。谁对结论的影响更大呢?是不是存在着一些影响不重要的特征?

苏南大叔:机器学习xgboost模型,特性重要性输出的依据是什么? - xgboost特征重要性输出
机器学习xgboost模型,特性重要性输出的依据是什么?(图1-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验文章。测试环境:python@3.12.3pandas@2.2.2numpy@1.26.4xlrd@2.0.1openpyxl@3.1.2scikit-learn@1.5.0xgboost@2.0.3

xgboost基模型

基础模型是基于树还是基于线性的,影响了特征重要性的输出依据。而xgboostbooster参数表示迭代的模型。包括:

  • gbtree,基于树的模型。
  • gblinear,基于线性模型。
模型名基于booster默认
gbtree树模型默认值
gblinear线模型非默认值

龙套代码

import pandas as pd
df = pd.read_csv("titanic.csv")
df = df.drop('Name', axis=1)
df = pd.get_dummies(df, columns=['Pclass', 'Sex'], drop_first=True)
target = df['Survived']
features = df.drop('Survived', axis=1)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_true = train_test_split(features, target, test_size=0.25, random_state=42)
import xgboost as xgb
model = xgb.XGBClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

重要性标准一 .feature_importances_

使用这个.feature_importances_变量的前提是:模型的基模型是 的。

f_importance = pd.Series(model.feature_importances_, index=features.columns)
print(f_importance.sort_values(ascending=False))

重要性标准二 plot_importance()

默认

importance_type='gain'

其它

结论

使用上面的几种方法都可以得出特征重要性的排序结果。但是,可以看到,排序的结果并不一致。其中,默认的.feature_importances_属性和plot_importance(importance_type='gain')的结果是一致的。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python