一、数据形式
XGBoost可以加载libsvm格式的文本数据,libsvm的文件格式(稀疏特征)如下:
1 101:1.2 102:0.03
0 1:2.1 10001:300 10002:400
…
每一行表示一个样本,第一行的开头的“1”是样本的标签。“101”和“102”为特征索引,‘1.2’和’0.03’ 为特征的值。
在两类分类中,用“1”表示正样本,用“0” 表示负样本。也支持[0,1]表示概率用来做标签,表示为正样本的概率。
下面的示例数据需要我们通过一些蘑菇的若干属性判断这个品种是否有毒。
每个样本描述了蘑菇的22个属性,比如形状、气味等等(将22维原始特征用加工后变成了126维特征,
并存为libsvm格式),然后给出了这个蘑菇是否可食用。其中6513个样本做训练,1611个样本做测试。
注:libsvm格式文件说明如下 https://www.cnblogs.com/codingmengmeng/p/6254325.html
XGBoost加载的数据存储在对象DMatrix中
XGBoost自定义了一个数据矩阵类DMatrix,优化了存储和运算速度
DMatrix文档:http://xgboost.readthedocs.io/en/latest/python/python_api.html
二、实战
import xgboost as xgb#导入包
from sklearn.metrics import accuracy_score
import graphviz
from matplotlib import pyplot
#填写自己的文件地址
dtrain=xgb.DMatrix(r'C:\Users\dhq\Desktop\All DATA\data\data\agaricus.txt.train')
dtest=xgb.DMatrix(r'C:\Users\dhq\Desktop\All DATA\data\data\agaricus.txt.test')
# print(dtrain.num_col())#查看数据行数
# print(dtrain.num_row())#查看数据列数
param={'max_depth':2,'eta':1,'silent':0,'object':'binary:logist'}#训练参数(还有很多参数,自行学习)
# print(param)#查看参数
num_round=2#设置bossting迭代次数
bst=xgb.train(param,dtrain,num_round)#训练模型
train_preds=bst.predict(dtrain)#以下为测试模型预测准确度
train_predictions=[round(value) for value in train_preds]
y_train=dtrain.get_label()#值为数据的第一行
train_accuracy=accuracy_score(y_train,train_predictions)
print("Train Accuary:%.2f%%"%(train_accuracy*100.0))
preds=bst.predict(dtest)
predictions=[round(value) for value in preds]
y_test=dtest.get_label()
test_accuracy=accuracy_score(y_test,predictions)
print('Test Accuracy: %.2f%%'%(test_accuracy*100.0))
# xgb.plot_tree(bst, num_trees=0, rankdir= 'LR' )#模型可视化
# pyplot.show()
以下是我实战文件内容:
链接:https://pan.baidu.com/s/13ngtPhcEmO_IxdwJfzQNKA 提取码:ij9n