平均特征后学习算法的准确性下降
Accuracy of learning algorithm drops after averaging features
我正在尝试清理一个庞大的数据集。在此数据集中,我有 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)
..当我这样做时,我希望算法的准确性不会受到此更改的太大影响,而且我认为它具有使我的数据看起来更干净的额外好处。但是,应用此更改后,准确率下降了一点,为什么会这样?是因为我的算法现在对数据拟合不足吗?
另外,在另一方面,我可以用这些属性做些什么来提高准确率吗?
平均可能会导致准确性下降,这可能是由于您提到的欠拟合造成的。我建议尝试使用特征选择方法来选择合适的属性。
准确率自然会下降。您使用的是 mean
但不是相关性。在学习算法中,一个属性的值在内部 dependency
会影响另一个属性。如果您只是平均所有属性,它如何学习 dependency
一个属性。
另一种删除 columns/attributes
的方法是 dimensional reduction
。您需要找到 correlation
并且具有更高 correlation
的属性可以被删除。
你可以简单地看到使用seaborn
import seaborn as sns
sns.heatmap(test_data.corr())
可以观想highly correlated attributes
,可以一一放下。 Dimensional Reduction
是减少信息丢失的方法之一。我希望这个解释有所帮助。
我正在尝试清理一个庞大的数据集。在此数据集中,我有 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)
..当我这样做时,我希望算法的准确性不会受到此更改的太大影响,而且我认为它具有使我的数据看起来更干净的额外好处。但是,应用此更改后,准确率下降了一点,为什么会这样?是因为我的算法现在对数据拟合不足吗?
另外,在另一方面,我可以用这些属性做些什么来提高准确率吗?
平均可能会导致准确性下降,这可能是由于您提到的欠拟合造成的。我建议尝试使用特征选择方法来选择合适的属性。
准确率自然会下降。您使用的是 mean
但不是相关性。在学习算法中,一个属性的值在内部 dependency
会影响另一个属性。如果您只是平均所有属性,它如何学习 dependency
一个属性。
另一种删除 columns/attributes
的方法是 dimensional reduction
。您需要找到 correlation
并且具有更高 correlation
的属性可以被删除。
你可以简单地看到使用seaborn
import seaborn as sns
sns.heatmap(test_data.corr())
可以观想highly correlated attributes
,可以一一放下。 Dimensional Reduction
是减少信息丢失的方法之一。我希望这个解释有所帮助。