这是我开始时的写法
(因为我的数据有处理(-101)所以就想着直接用np的广播写方便一点)
dtrain = xgb.DMatrix(train_data,label=np.asarray(train_label)-101)
dtest = xgb.DMatrix(test_data,label=np.asarray(test_label)-101)
其中 train_data 和 test_data 是 csr_matrix
出现问题,发现训练时的错误率都为0,实际错误率却非常高
检查了一下,发现问题在dtrain的label上
dtrain.get_label()
array([ 8.40779079e-45, 1.12103877e-44, 4.20389539e-45, ...,
9.80908925e-45, 4.20389539e-45, 4.20389539e-45], dtype=float32)
和github上的demo代码比对以后发现他的label用的是[],然后尝试了
dtrain = xgb.DMatrix(train_data,label=list(map(lambda x : x-101,train_label)))
dtest = xgb.DMatrix(test_data,label=list(map(lambda x : x-101,test_label)))
成功
——————————————————————
其实我最最开始的解决方案也不是那么写的,我写的是
dtrain = xgb.DMatrix(train_data.toarray(),label=np.asarray(train_label)-101)
dtest = xgb.DMatrix(test_data.toarray(),label=np.asarray(test_label)-101)
这样也行,但是这样太吃内存,渣服务器跑不动了。。