• 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()

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

  • 相关阅读:
    作业1-四则运算题目生成程序
    实验四 决策树算法及应用
    实验三朴素贝叶斯算法及应用
    自定义博客园背景
    机器学习 实验二 K-近邻算法及应用
    机器学习 实验一 感知器及其运用
    实验三 面向对象分析与设计
    实验二 结构化分析与设计
    实验一:软件开发文档与工具的安装与使用
    朴素贝叶斯学习日志——简单案例python计算过程
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/15018719.html
Copyright © 2020-2023  润新知