随笔 - 384  文章 - 0  评论 - 35  阅读 - 142万

xgboost.plot_importance画特征重要性,字段是中文名称时

1.一般来说我们可以使用xgboost.get_score去画图,但是如果字段名字有中文时,是会报错的

2.可以通过映射关系,从plot_importance的参数入手。但是可能会复杂一下。

3.可以使用xgb.DMatrix(tfeature_names=list),这个方法简单实用。

下面演示一下第三个方法:

复制代码
train_x, test_x, train_y, test_y = train_test_split(data_x.values, data_y.values, test_size=0.3,random_state=1234,stratify=data_y)

d_train = xgb.DMatrix(train_x, label=train_y,feature_names=list(data_x.columns))
d_valid = xgb.DMatrix(test_x, label=test_y,feature_names=list(data_x.columns))
watchlist = [(d_train, 'train'), (d_valid, 'valid')]
#参数设置
params={
    'eta': 0.2, # 特征权重 取值范围0~1 通常最后设置eta为0.01~0.2
    'max_depth':3,   # 通常取值:3-10 树的深度
    'min_child_weight':6, # 最小样本的权重,调大参数可以防止过拟合
    'gamma':0.3,
    'subsample':0.8, #随机取样比例
    'colsample_bytree':0.8, #默认为1 ,取值0~1 对特征随机采集比例
    'booster':'gbtree', #迭代树
    'objective': 'binary:logistic', #逻辑回归,输出为概率
    'nthread':8, #设置最大的进程量,若不设置则会使用全部资源
    'scale_pos_weight': 10, #默认为0,1可以处理类别不平衡
    'lambda':1,   #默认为1
    'seed':1234, #随机数种子
    'silent':1 , #0表示输出结果
    'eval_metric': 'auc' # 检验指标
}
bst = xgb.train(params, d_train,1000,watchlist,early_stopping_rounds=500, verbose_eval=10)
tree_nums=bst.best_ntree_limit
print('最优模型树的数量:%s,auc:%s' % (bst.best_ntree_limit, bst.best_score)) #最优模型树的数量:81,auc:0.870911
bst = xgb.train(params, d_train,tree_nums,watchlist,early_stopping_rounds=500, verbose_eval=10)
#joblib.dump(bst, 'd:/xgboost.model') #保存模型

###########
plot_importance(bst,max_num_features=20)
plt.show()
复制代码

按照一般的建模流程做就可以,不必在意是否能运行上面这段代码

posted on   小小喽啰  阅读(2326)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2020-07-16 pandas 的pd.cut() 和pd.qcut() 数据分箱
2020-07-16 pandas 的groupby()
2020-07-16 pandas 的apply() 函数
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示