相关疑难解决方法(0)

sklearn.decomposition.PCA 的特征向量的简单图

我试图了解Principal Component Analysis它是如何工作的,我正在sklearn.datasets.load_iris数据集上对其进行测试。我了解每个步骤的工作原理(例如,对数据进行标准化、协方差、特征分解、对最高特征值进行排序、使用K选定维度将原始数据转换为新轴)。

下一步是可视化这些eigenvectors投影到数据集的位置(在 上PC1 vs. PC2 plot,对吗?)。

有人可以解释如何在降维数据集的 3D 图上绘制 [PC1, PC2, PC3] 特征向量吗?

另外,我是否正确绘制了这个 2D 版本?我不确定为什么我的第一个特征向量的长度较短。我应该乘以特征值吗?


以下是我为实现这一目标所做的一些研究:

我遵循的 PCA 方法来自:https : //plot.ly/ipython-notebooks/principal-component-analysis/#Shortcut---PCA-in-scikit-learn(虽然我不想使用plotly. 我想坚持pandas, numpy, sklearn, matplotlib, scipy, and seaborn)

我一直在关注这个绘制特征向量的教程,它看起来很简单:使用 matplotlib 的 PCA 的基本示例,但我似乎无法用我的数据复制结果。

我发现了这一点,但对于我想要做的事情来说似乎过于复杂,我不想创建一个FancyArrowPatch使用 matplotlib 和 np.linalg 绘制协方差矩阵的特征向量


我试图让我的代码尽可能简单,以遵循其他教程:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from …
Run Code Online (Sandbox Code Playgroud)

python machine-learning matplotlib pca scikit-learn

5
推荐指数
1
解决办法
9965
查看次数

NumPy的错误特征值/向量

我正在尝试找到以下矩阵的特征值/向量:

A = np.array([[1, 0, 0],
              [0, 1, 0],
              [1, 1, 0]])
Run Code Online (Sandbox Code Playgroud)

使用代码:

from numpy import linalg as LA
e_vals, e_vecs = LA.eig(A)
Run Code Online (Sandbox Code Playgroud)

我得到这个作为答案:

print(e_vals)
[ 0.  1.  1.]

print(e_vecs)
[[ 0.          0.70710678  0.        ]
 [ 0.          0.          0.70710678]
 [ 1.          0.70710678  0.70710678]]
Run Code Online (Sandbox Code Playgroud)

但是,我相信以下应该是答案。

[1] Real Eigenvalue = 0.00000
[1] Real Eigenvector:
0.00000
0.00000
1.00000

[2] Real Eigenvalue = 1.00000
[2] Real Eigenvector:
1.00000
0.00000
1.00000

[3] Real Eigenvalue = 1.00000
[3] Real Eigenvector:
0.00000
1.00000
1.00000
Run Code Online (Sandbox Code Playgroud)

也就是说,特征值-特征向量问题表明以下内容应成立:

# A …
Run Code Online (Sandbox Code Playgroud)

python matrix scipy eigenvalue eigenvector

4
推荐指数
1
解决办法
1893
查看次数