欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Check failed: weights_.Size() == num_row_ (38997 vs. 383852) : Size of weights must equal to number.

发布时间:2024/5/17 82 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Check failed: weights_.Size() == num_row_ (38997 vs. 383852) : Size of weights must equal to number. 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

XGB训练模型报错:Check failed: weights_.Size() == num_row_ (38997 vs. 383852) : Size of weights must equal to number of rows.

分析

单纯看报错应该是说什么维度没有对上,但是很奇怪,我的数据只是换了一个标签而而已,特征并没有改变,按理来说不应该有特征维度对不上的情况,所以只有可能是标签的问题。

训练集的数据是用libsvm格式存储的,看了几条数据没发现啥问题,但是特征维度太多了,所以很难一个一个看,所以打算换一种加载数据的方式。

XGB加载数据:

train = xgb.DMatrix("./data/tr_data") test = xgb.DMatrix("./data/te_data")

load_svmlight_file加载数据:

load_svmlight_file("./data/tr_data")

然后又报了一个错,大意是说数据中有NULL,导致解析不了。

所以现在情况就明晰了,基于前面的经验,特征不可能有问题,所以肯定是标签里面有NULL。

原来下载数据的逻辑是:

(casewhen label = 'G' then '1'when label = 'B' then '0'else NULL end) as label

如果标签中有NULL,说明label中存在不为G和B的情况,突然间想起,新的标签中加入了I标签,导致最后下载数据的时候将I标签映射为了NULL,破案了。

最后将下载数据的逻辑修改,只下载label in ('G', 'B', 0, 1)的数据就OK了。

总结

以上是生活随笔为你收集整理的Check failed: weights_.Size() == num_row_ (38997 vs. 383852) : Size of weights must equal to number.的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。