前情回顾与本文目标
上一回,我们举了一个 XGBoost
的应用实例,用以 “判断野生蘑菇在什么情况下可以吃?”。现在我们打算挑战一下,看看算法是如何工作的。这不是一件很容易的事情,因为一个算法需要排除很多意外情形、还要会用 python
调用 C++
的动态库,这都无形中给算法披上了一层又一层的外衣。在这篇文章中,我们不涉及 C++
动态库的实现,先关注 python
层的逻辑关系。
我们先来回顾一下代码:
import xgboost as xgb
# 准备数据
dtrain = xgb.DMatrix('agaricus.txt.train')
dtest = xgb.DMatrix('agaricus.txt.test')
# 设置参数
param = {
'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic'}
watchlist = [(dtest, 'eval'), (dtrain, 'train')]
num_round = 2
# 训练模型
bst = xgb.train(param, dtrain, num_round, watchlist)
# 检验模型
preds = bst.predict(dtest)
labels = dtest.get_label()
print('error=%f' % (sum(1 for i in