2017-06-19 153 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([row [: - 1] for norm])'的用途是什么。 – Toni

+0

我也在那里发帖,最终决定这是更好的位置,因为我认为问题的根源比我的代码更符合理论 – bendl

+0

是的,没问题。我在表格上不是很大,并且不知道在哪里发表我的答案。可能你应该考虑删除你在任何社区的帖子。我看到你张贴了数据集的一部分,但我没有机会玩它。 – Toni

回答

1

变形虫堆交换变形虫最终给了我答案 - 这是一个简单的错字。我打电话给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