我正在为非常稀疏的矩阵运行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()
。
解决此问题的一种方法是使用在准备数据时唯一的列名称,然后应该解决问题。