xgboost使用
Posted callyblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xgboost使用相关的知识,希望对你有一定的参考价值。
xgboost的实现方式为多颗CART树,其实xgboost就是类似于随机森林,但是与随机森林不同,他不是多个子树决策的结果,CART树最后会算出一个得分,是一个值,最后算出分类的时候,是多个值结合在一起用一个式子算出分类的。
这里只记录xgboost的使用方式:
from sklearn.model_selection import train_test_split from sklearn import metrics from sklearn.datasets import make_hastie_10_2 from xgboost.sklearn import XGBClassifier X, y = make_hastie_10_2(random_state=0) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)##test_size测试集合所占比例 print(len(X_train[569])) print(len(X_test)) clf = XGBClassifier( silent=1 ,#设置成1则没有运行信息输出,最好是设置为0.是否在运行升级时打印消息。 #nthread=4,# cpu 线程数 默认最大 learning_rate= 0.3, # 如同学习率 min_child_weight=1, # 这个参数默认是 1,是每个叶子里面 h 的和至少是多少,对正负样本不均衡时的 0-1 分类而言 #,假设 h 在 0.01 附近,min_child_weight 为 1 意味着叶子节点中最少需要包含 100 个样本。 #这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数值越小,越容易 overfitting。 max_depth=6, # 构建树的深度,越大越容易过拟合 gamma=0, # 树的叶子节点上作进一步分区所需的最小损失减少,越大越保守,一般0.1、0.2这样子。 subsample=1, # 随机采样训练样本 训练实例的子采样比 max_delta_step=0,#最大增量步长,我们允许每个树的权重估计。 colsample_bytree=1, # 生成树时进行的列采样 reg_lambda=1, # 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。 #reg_alpha=0, # L1 正则项参数 #scale_pos_weight=1, #如果取值大于0的话,在类别样本不平衡的情况下有助于快速收敛。平衡正负权重 #objective= ‘multi:softmax‘, #多分类的问题 指定学习任务和相应的学习目标 #num_class=10, # 类别数,多分类与 multisoftmax 并用 n_estimators=100, #树的个数 seed=1000 #随机种子 #eval_metric= ‘auc‘ ) clf.fit(X_train,y_train,eval_metric=‘auc‘) #设置验证集合 verbose=False不打印过程 clf.fit(X_train, y_train,eval_set=[(X_train, y_train), (X_test, y_test)],eval_metric=‘auc‘,verbose=False) #获取验证集合结果 evals_result = clf.evals_result() y_pred = clf.predict(X_test) y_true = y_test clf.get_booster().save_model(r‘/xgb.model‘) booster = clf.get_booster() print(metrics.accuracy_score(y_true, y_pred)) #回归
以上是关于xgboost使用的主要内容,如果未能解决你的问题,请参考以下文章
Visual C++:从 DLL 调用时 XGBoost 不起作用