【问题标题】:feature_names must be unique - Xgboostfeature_names 必须是唯一的 - Xgboost
【发布时间】:2017-09-20 14:37:06
【问题描述】:

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

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

我该如何处理?

这是我的代码。

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

【问题讨论】:

    标签: python pandas xgboost sklearn-pandas


    【解决方案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。在这种情况下,DMatrixliterally runs df.columns 提取 feature_names。检查您的test_df 是否有重复的列名,删除或重命名它们,然后再次尝试DMatrix()

    【讨论】:

      【解决方案2】:

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

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

      来源:python pandas remove duplicate columns

      这一行应该确定哪些列是重复的:

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

      【讨论】:

        【解决方案3】:

        解决此问题的一种方法是在准备数据时使用唯一的列名,然后它应该可以解决。

        【讨论】:

          猜你喜欢
          • 2012-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-16
          • 2016-11-13
          • 2018-07-26
          相关资源
          最近更新 更多