2017-11-22 11 views
0

私は浄化しようとしている巨大なデータセットを持っています。このデータセット内には、1〜10の評価システムを表す6つの列があります。だから、最初の列は、私はすべてのこれらの列の平均を見つけて、新しい列にそれを保存し、これらの列をドロップすることを決めた魅力、知性に基づいて、第2の列に基づいて人物など平均化機能後の学習アルゴリズムの精度が低下する

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)私は、このためのコードは、私がこれをした..when私は、アルゴリズムの期待...

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) 

ある

avg_attr 
5 
6.5 
7.166 
... 

...が残っています影響を受けない精度この変更によって多くのことが加えられ、データがよりクリーンに見えるという利点が追加されたと私は考えました。しかし、この変更を適用した後、少しだけ精度が低下しました。なぜそうですか?私のアルゴリズムがデータにあまり適合していないのでしょうか?

さらに、精度を高めるために、これらの属性を使ってできることは何ですか?

+0

シュワルツェネッガーとアインシュタインは、物理的知的魅力を平均化してもそれ以上の違いはありません。これはちょうどクリーンアップだと思いますか? scnr – stefan

答えて

3

精度は低下します。 meanですが、相関はありません。学習アルゴリズムでは、ある属性の内部でdependencyの値が他の属性に影響を与えています。すべての属性の平均をとった場合、どのようにしてdependencyが互いに覚えているかを知ることができます。

columns/attributesを削除する別の方法は、dimensional reductionです。 correlationが必要で、属性がより高いcorrelationを削除する必要があります。

あなたは、単にあなたがhighly correlated attributesを視覚化することができますし、一つ一つをドロップすることができseaborn

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

を使用して見ることができます。 Dimensional Reductionは、情報の損失を減らす方法の1つです。この説明が役立つことを願っています。

1

平均化すると正確に言えないことがあります。適切な属性を選択するための機能選択方法を試してみることをお勧めします。

関連する問題