平均功能后学习算法的准确性下降

时间:2017-11-22 19:45:04

标签: pandas machine-learning neural-network bigdata prediction

我有一个巨大的数据集,我正在努力清理。在这个数据集中,我有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 个答案:

答案 0 :(得分:3)

很自然,准确度会降低。您正在使用mean但不是相关性。在学习算法中,一个属性中的内部dependency值正在影响另一个属性。如果您只是对所有属性求平均值,那么它如何在另一个属性中学习dependency

您可以放弃columns/attributes的另一种方法是dimensional reduction。您需要找到correlation,并且可以删除具有更高correlation的属性。

你可以简单地看到使用seaborn

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

您可以可视化highly correlated attributes并逐一删除。 Dimensional Reduction是减少信息丢失的方法之一。我希望这个解释有所帮助。

答案 1 :(得分:1)

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