
pip install xgboost
XGBoost python 模块能够加载多种不同格式的数据,包括:NumPy的2维数组、 SciPy的2维稀疏数组、Pandas的DataFrame、XGBoost的2进制缓存文件、LIBSVM文本格式文件、CSV文件等。
XGBoost的数据被存储在 DMatrix 对象中,下面演示几种数据的加载方式
加载NumPy数组到DMatrix:
data = np.random.rand(5, 10) # 5条样本记录, 其中每条包含10个特征
label = np.random.randint(2, size=5) # 2分类的目标
dtrain = xgb.DMatrix(data, label=label)
加载 scipy.sparse 数组到 DMatrix:
csr = scipy.sparse.csr_matrix((dat, (row, col)))
dtrain = xgb.DMatrix(csr)
加载Pandas的DataFrame到 DMatrix:
data = pandas.DataFrame(np.arange(12).reshape((4,3)), columns=['a', 'b', 'c'])
label = pandas.DataFrame(np.random.randint(2, size=4))
dtrain = xgb.DMatrix(data, label=label)
把DMatrix数据保存成XGBoost 二进制文件,后期加载的速度会更快:
dtrain = xgb.DMatrix('train.svm.txt')
dtrain.save_binary('train.buffer')
在DMatrix构建时,可以使用指定的默认值来替换缺失值:
dtrain = xgb.DMatrix(data, label=label, missing=np.NaN)
把CSV文件加载进DMatrix:
# label_column=0,即是列标题在文件中的第0行
dtrain = xgb.DMatrix('train.csv?format=csv&label_column=0')
dtest = xgb.DMatrix('test.csv?format=csv&label_column=0')
由于XGBoost 中的解析器功能有限。所以在 Python 开发时,建议使用 pandas read_csv 或其他类似的实用程序,而不是 XGBoost 的内置解析器。
XGBoost 可以使用一对列表或字典来设置参数。例如:
Booster参数
# max_depth 树的最大深度
# eta 每次更新权重梯度的缩放比例
# objective:binary:logistic 代表使用二分类的逻辑回归
param = {'max_depth': 2, 'eta': 1, 'objective': 'binary:logistic'}
# nthread 指定最大线程数
param['nthread'] = 4
# eval_metric指定模型的评价指标
param['eval_metric'] = 'auc'
还可以指定多个评价指标:
param['eval_metric'] = ['auc', 'ams@0']
# alternatively:
# plst = param.items()
# plst += [('eval_metric', 'ams@0')]
指定验证集以观察性能
evallist = [(dtest, 'eval'), (dtrain, 'train')]
更多参数设置可以在官方文档中找到详细介绍。