XGBoost 的训练方法 fit () 和 trian () 方法的区别

XGBoost有两大类接口:XGBoost原生接口scikit-learn接口 ,并且XGBoost能够实现 分类 和 回归 两种任务。对于分类任务,XGBOOST可以实现二分类和多分类。

1、xgboost.XGBClassifier()利用函数参数设置模型参数
XGBClassifier()使用sklearn接口(推荐) ,XGBClassifier - 是xgboost的sklearn包。这个包允许我们像GBM一样使用Grid Search 和并行处理。

2、xgboost.train()利用param列表设置模型参数。
原始的xgboost,xgb - 直接引用xgboost。 有“cv”函数。

clf = XGBClassifier(
    n_estimators=20,  # 迭代次数
    learning_rate=0.1,  # 步长
    max_depth=5,  # 树的最大深度
    min_child_weight=1,  # 决定最小叶子节点样本权重和
    silent=1,  # 输出运行信息
    subsample=0.8,  # 每个决策树所用的子样本占总样本的比例(作用于样本)
    colsample_bytree=0.8,  # 建立树时对特征随机采样的比例(作用于特征)典型值:0.5-1
    objective='multi:softmax',  # 多分类!!!!!!
    num_class=3,
    nthread=4,
    seed=27)
print "training..."
clf.fit(x_train, y_train, verbose=True)
fit_pred = clf.predict(x_test)
print fit_pred

# 原生接口
xgb_params = {
    'learning_rate': 0.1,  # 步长
    'max_depth': 5,  # 树的最大深度
    'objective': 'multi:softmax',
    'num_class': 3,
    'min_child_weight': 1,  # 决定最小叶子节点样本权重和,如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束。
    'silent': 0,  # 输出运行信息
    'subsample': 0.8,
    'colsample_bytree': 0.8,  # 建立树时对特征随机采样的比例(作用于特征)典型值:0.5-1
    'nthread': 4,
    'seed': 27}
print "training..."
model = xgb.train(xgb_params, xgb.DMatrix(x_train, y_train), num_boost_round=20)
train_pred = model.predict(xgb.DMatrix(x_test))
count = 0
print train_pred
# 判断train_pred和fit_pred是否一致
for i in np.arange(0, len(train_pred)):
    if (train_pred[i] == fit_pred[i]):
        count += 1
print "len:", len(train_pred)
print "count:", count
if count == len(train_pred):
    print "true"
else:
    print "false"
y

为者常成,行者常至