2017-06-19 9 views
0

sklearnのPCAモジュールを使用しています。私は次のコードを使って分析を設定しています。Python sklearn PCA.explained_variance_ratio_が1に合わない

from sklearn.decomposition import PCA 
pca = PCA(n_components=9) 
p = pca.fit([row[:-1] for row in norm]) 

normは、ここで私は最後の行でそれを削除しています理由は、最後の列に一意の識別子と、私の正規化されたデータセットです。このデータセットには9つの機能があるため、説明できない分散がないと考えられる9つのコンポーネントが必要です。私はしかし、p.explained_variance_.cumsum()を呼び出すと、私が手:

[ 0.06589563 0.08608778 0.09578116 0.10150195 0.10703567 0.11036608 
    0.11241904 0.11422285 0.11591605] 

アムは、私がPCAについて何かを誤解しますか?これまではこのモジュールを使っていませんでしたが、それはしばらくありました。これを間違って設定していますか?私はここに投稿するための識別情報のデータを削除しました。以下は、問題を再現していると思われるデータのサブセットです。ここで

[0.3888888888888889, 0.3888888888888889, 0.3888888888888889, 0.436943311456892, 0.7905900031193156, 0.5020468092219706, 0.8389717734280283, 0.7604923090797432, 0.8206054422776056, '0'] 
[0.3888888888888889, 0.3888888888888889, 0.2222222222222222, 0.4457200178477334, 0.8114779465247448, 0.506899600792241, 0.8368566485573798, 0.760617288778523, 0.8195489478905984, '1'] 
[0.2777777777777778, 0.2777777777777778, 0.05555555555555555, 0.4426231291814084, 0.7883413226205706, 0.5037172133121759, 0.8370362549229062, 0.7599752704033258, 0.8184218722901648, '2'] 
[0.1111111111111111, 0.1111111111111111, 0.16666666666666666, 0.4651807845446571, 0.7983379003654792, 0.5250604537887904, 0.8463875215362144, 0.7533582308429306, 0.8241548325954007, '3'] 
[0.5000000000000001, 0.5000000000000001, 0.3333333333333333, 0.4457200178477334, 0.7878040593905666, 0.506899600792241, 0.8368566485573798, 0.7605016058324149, 0.8195489478905984, '4'] 
[0.3888888888888889, 0.3888888888888889, 0.2222222222222222, 0.44943322185630036, 0.7843622888520198, 0.5055757644148106, 0.8351253941103399, 0.7604171267769607, 0.8185442945328569, '5'] 
[0.3888888888888889, 0.3888888888888889, 0.3333333333333333, 0.4424914587425397, 0.7877430312713435, 0.5029950110274568, 0.836692391332608, 0.760611529525946, 0.8198150075184326, '6'] 
[0.3333333333333333, 0.05555555555555555, 0.7777777777777778, 0.4389415113841421, 0.7878040593905666, 0.506899600792241, 0.8368566485573798, 0.7605016058324149, 0.8195489478905984, '7'] 
[0.4444444444444444, 0.4444444444444444, 0.4444444444444444, 0.42770705188736874, 0.7976039510596705, 0.5057230657076256, 0.8368566485573798, 0.7605016058324149, 0.8195489478905984, '8'] 
[0.2222222222222222, 0.2777777777777778, 0.5000000000000001, 0.43182322765312314, 0.7971732873351607, 0.5072390458086798, 0.84541364942531, 0.7613416598875292, 0.8239037851005895, '9'] 
+0

質問は、CVコミュニティよりもここに適しています。 'p = pca.fit([normの行の行[: - 1])'の目的が何であるのだろうか。 – Toni

+0

私はそこにも投稿しました。最終的には、これがより良い場所だと判断しました。なぜなら、問題の根源は理論よりも自分のコードであるからです。 – bendl

+0

はい、問題ありません。私はフォーム上で大きくはないし、私の答えを投稿する場所を知らなかった。おそらくどちらのコミュニティでもあなたの投稿を削除することを検討するべきでしょう。私はあなたがデータセットの一部を投稿したのを見ていますが、私はそれを遊ぶ機会がありませんでした。 – Toni

答えて

1

アメーバのCVスタック交換で私の答えは終わりになりました - それは単純なタイプミスでした。私はp.explained_variance_.cumsum()を呼び出しましたが、適切なメソッド呼び出しはp.explained_variance_ratio_.cumsum()でした。もちろん、分散は合計する必要はありません!

+0

私はあなたの答えを持ってうれしく思っています...右...それは説明された分散の割合です... – Toni

2

はスクリープロットを含むアイリスデータセットとの一例です:

あなただけの投稿データセットを使用して問題を再現しようとすると

enter image description here


d = matrix([[0.3888888888888889, 0.3888888888888889, 0.3888888888888889, 0.436943311456892, 0.7905900031193156, 0.5020468092219706, 0.8389717734280283, 0.7604923090797432, 0.8206054422776056, '0'], 
[0.3888888888888889, 0.3888888888888889, 0.2222222222222222, 0.4457200178477334, 0.8114779465247448, 0.506899600792241, 0.8368566485573798, 0.760617288778523, 0.8195489478905984, '1'], 
[0.2777777777777778, 0.2777777777777778, 0.05555555555555555, 0.4426231291814084, 0.7883413226205706, 0.5037172133121759, 0.8370362549229062, 0.7599752704033258, 0.8184218722901648, '2'], 
[0.1111111111111111, 0.1111111111111111, 0.16666666666666666, 0.4651807845446571, 0.7983379003654792, 0.5250604537887904, 0.8463875215362144, 0.7533582308429306, 0.8241548325954007, '3'], 
[0.5000000000000001, 0.5000000000000001, 0.3333333333333333, 0.4457200178477334, 0.7878040593905666, 0.506899600792241, 0.8368566485573798, 0.7605016058324149, 0.8195489478905984, '4'], 
[0.3888888888888889, 0.3888888888888889, 0.2222222222222222, 0.44943322185630036, 0.7843622888520198, 0.5055757644148106, 0.8351253941103399, 0.7604171267769607, 0.8185442945328569, '5'], 
[0.3888888888888889, 0.3888888888888889, 0.3333333333333333, 0.4424914587425397, 0.7877430312713435, 0.5029950110274568, 0.836692391332608, 0.760611529525946, 0.8198150075184326, '6'], 
[0.3333333333333333, 0.05555555555555555, 0.7777777777777778, 0.4389415113841421, 0.7878040593905666, 0.506899600792241, 0.8368566485573798, 0.7605016058324149, 0.8195489478905984, '7'], 
[0.4444444444444444, 0.4444444444444444, 0.4444444444444444, 0.42770705188736874, 0.7976039510596705, 0.5057230657076256, 0.8368566485573798, 0.7605016058324149, 0.8195489478905984, '8'], 
[0.2222222222222222, 0.2777777777777778, 0.5000000000000001, 0.43182322765312314, 0.7971732873351607, 0.5072390458086798, 0.84541364942531, 0.7613416598875292, 0.8239037851005895, '9']]) 

enter image description here

関連する問題