代码之家  ›  专栏  ›  技术社区  ›  buydadip

平均特征后,学习算法的准确性下降

  •  0
  • buydadip  · 技术社区  · 7 年前

    我正试图清理一个巨大的数据集。在这个数据集中,我有6列代表1-10的评级系统。因此,第一栏根据吸引力来评价一个人,第二栏根据智力等来评价一个人。

    attr1  attr2  attr3  attr4  attr5  attr6
    2      5      6      8      7      2
    5      9      6      9      7      3
    9      8      7      5      8      6
         ...                ...
    

    我决定找到所有这些列的平均值,并将其保存到一个新列中,然后删除这些列,因此现在我只剩下(attr1-attr6)了。。。

    avg_attr
    5
    6.5
    7.166
    ...
    

    代码是。。。

    data['avg_attr'] = data[['attr1', 'attr2', 'attr3', 'attr4', 'attr5', 'attr6']].mean(axis=1)
    
    # Convert columns to 1-dimensional Series array
    series = data.columns.to_series()
    
    # Attribute data can be dropped because we already have the total mean.
    data = data.drop(series["attr1":"attr6"], axis=1)
    

    ..当我这样做的时候,我希望算法的准确性不会受到这种变化的太大影响,而且我认为它还有一个额外的好处,那就是使我的数据看起来更干净。然而,在应用此更改后,准确率略有下降,为什么会这样?是因为我的算法现在对数据拟合不足吗?

    另外,我可以用这些属性来提高准确率吗?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Hari_pb    7 年前

    准确性自然会下降。你正在接受 mean 但不是相关性。在学习算法中,内部 dependency 一个属性中的值对另一个属性有影响。如果你只是平均所有属性,它如何学习 附属国 一个接一个。

    另一种方法是 columns/attributes 是由 dimensional reduction . 你需要找到 correlation 属性具有更高的 相关性 可以丢弃。

    你可以简单地看到使用seaborn

    import seaborn as sns
    sns.heatmap(test_data.corr())
    

    你可以想象 highly correlated attributes 可以一个接一个地掉下来。 Dimensional Reduction 是减少信息丢失的方法之一。我希望这个解释能有所帮助。

        2
  •  1
  •   Sarvesh Jayaraman    7 年前

    平均可能会导致精度下降,可能是由于您提到的拟合不足。我建议尝试特征选择方法来选择合适的属性。