导言
在某次工作项目中需要使用libsvm格式的数据训练xgboost模型,得到模型之后再验证模型打分的时候使用csv格式数据,发现用csv文件的预测值和libsvm格式数据的预测值对不上,经过一系列尝试最终解决了这个问题。
导致问题的原因:Dmatrix对不同存储方式的数据的处理方式不一致。
接下来是问题复现和问题解决的过程:
生成模拟libsvm格式数据
1.首先是准备复现问题的数据
## xgboost == 2.0.0
feature_list = [1,4,5,6,7] ##特征编号
import random
def gen_data(file_path,cnt):
with open(file_path,"w") as f:
for i in range(cnt):
##label 0,1,2
f.write(str(random.randint(0,2)) + " ")
##写特征
for j in range(len(feature_list)):
if j == len(feature_list) - 1:
f.write