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
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)