Check failed: weights_.Size() == num_row_ (38997 vs. 383852) : Size of weights must equal to number.
生活随笔
收集整理的這篇文章主要介紹了
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.的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年第十二届蓝桥杯 - 省赛 -
- 下一篇: 2021年第十二届蓝桥杯 - 省赛 -