feature_names必须是唯一的 - Xgboost

时间:2017-04-24 03:07:44

标签: python pandas xgboost sklearn-pandas

我正在为一个非常稀疏的矩阵运行xgboost模型。

我收到此错误。 ValueError:feature_names必须是唯一的

我该如何处理?

这是我的代码。

  yprob = bst.predict(xgb.DMatrix(test_df))[:,1]

2 个答案:

答案 0 :(得分:6)

根据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()

答案 1 :(得分:0)

假设问题确实是重复的列,那么下面的行应该可以解决您的问题:

test_df = test_df.loc[:,~test_df.columns.duplicated()]

来源:python pandas remove duplicate columns

此行应标识重复的列:

duplicate_columns = test_df.columns[test_df.columns.duplicated()]