我正在爲非常稀疏的矩陣運行xgboost模型。feature_names必須是唯一的 - Xgboost
我收到此錯誤。 ValueError:feature_names必須是唯一的
我該如何處理?
這是我的代碼。
yprob = bst.predict(xgb.DMatrix(test_df))[:,1]
我正在爲非常稀疏的矩陣運行xgboost模型。feature_names必須是唯一的 - Xgboost
我收到此錯誤。 ValueError:feature_names必須是唯一的
我該如何處理?
這是我的代碼。
yprob = bst.predict(xgb.DMatrix(test_df))[:,1]
根據所述的xgboost
source code documentation,此錯誤只發生在one place - 在一個DMatrix
內部函數。這裏的源代碼摘錄如下:
if len(feature_names) != len(set(feature_names)):
raise ValueError('feature_names must be unique')
所以,這裏的錯誤文字很漂亮,您的test_df
至少有一個重複的功能/列名稱。
您已在此貼子上標記pandas
;這表明test_df
是熊貓DataFrame
。在這種情況下,DMatrix
literally runs df.columns
來提取feature_names
。檢查您的test_df
重複的列名稱,刪除或重命名它們,然後再次嘗試DMatrix()
。
解決此問題的一種方法是使用在準備數據時唯一的列名稱,然後應該解決問題。