Check failed: weights_.Size() == num_row_ (38997 vs. 383852) : Size of weights must equal to number.
XGB訓(xùn)練模型報(bào)錯(cuò):Check failed: weights_.Size() == num_row_ (38997 vs. 383852) : Size of weights must equal to number of rows.
分析
單純看報(bào)錯(cuò)應(yīng)該是說(shuō)什么維度沒(méi)有對(duì)上,但是很奇怪,我的數(shù)據(jù)只是換了一個(gè)標(biāo)簽而而已,特征并沒(méi)有改變,按理來(lái)說(shuō)不應(yīng)該有特征維度對(duì)不上的情況,所以只有可能是標(biāo)簽的問(wèn)題。
訓(xùn)練集的數(shù)據(jù)是用libsvm格式存儲(chǔ)的,看了幾條數(shù)據(jù)沒(méi)發(fā)現(xiàn)啥問(wèn)題,但是特征維度太多了,所以很難一個(gè)一個(gè)看,所以打算換一種加載數(shù)據(jù)的方式。
XGB加載數(shù)據(jù):
train = xgb.DMatrix("./data/tr_data") test = xgb.DMatrix("./data/te_data")load_svmlight_file加載數(shù)據(jù):
load_svmlight_file("./data/tr_data")然后又報(bào)了一個(gè)錯(cuò),大意是說(shuō)數(shù)據(jù)中有NULL,導(dǎo)致解析不了。
所以現(xiàn)在情況就明晰了,基于前面的經(jīng)驗(yàn),特征不可能有問(wèn)題,所以肯定是標(biāo)簽里面有NULL。
原來(lái)下載數(shù)據(jù)的邏輯是:
(casewhen label = 'G' then '1'when label = 'B' then '0'else NULL end) as label如果標(biāo)簽中有NULL,說(shuō)明label中存在不為G和B的情況,突然間想起,新的標(biāo)簽中加入了I標(biāo)簽,導(dǎo)致最后下載數(shù)據(jù)的時(shí)候?qū)標(biāo)簽映射為了NULL,破案了。
最后將下載數(shù)據(jù)的邏輯修改,只下載label in ('G', 'B', 0, 1)的數(shù)據(jù)就OK了。
總結(jié)
以上是生活随笔為你收集整理的Check failed: weights_.Size() == num_row_ (38997 vs. 383852) : Size of weights must equal to number.的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2021年第十二届蓝桥杯 - 省赛 -
- 下一篇: 字节跳动2018校招算法方向(第一批)