【发布时间】:2021-05-03 08:49:42
【问题描述】:
我需要绘制我这样计算的特征向量:
def fit(self, X):
'''
fits sorted eigenvalues and eigenvectors to class attributes. same goes for variance and explained variance.
'''
n_samples = X.shape[0]
# We center the data and compute the sample covariance matrix.
X -= np.mean(X, axis=0)
self.cov_matrix_ = np.dot(X.T, X) / (n_samples-1)
#test = np.cov(X)
#Negative values are ignored with eigh
(self.eigvalues_, self.components_) = np.linalg.eigh(self.cov_matrix_)
idx = self.eigvalues_.argsort()[::-1]
self.eigvalues_ = self.eigvalues_[idx]
self.components_ = self.components_[:,idx]
self.variance_ = np.sum(self.eigvalues_)
self.explained_variance_ = self.eigvalues_ / self.variance_
def transform(self, X):
#project data onto eigenvectors
print(self.components_.shape, X.shape)
self.projected_ = X @ self.components_.T
return self.projected_
进入我的数据集前 2 个特征的图。
self.components_ 的形状是 100x240 数据集的 240 个特征向量,形状为 240x240。 用最大的特征值绘制我的 2 个特征向量的前两个值后,结果如下:
pca = PCA()
pca.fit(subsample)
#pca.transform(subsample)
plt.scatter(subsample[:,0], subsample[:,1], edgecolor='none', alpha=0.5)
plt.quiver(pca.components_[0,0], pca.components_[0,1],
angles='xy', scale_units='xy', scale=1, width=0.002 )
plt.quiver(pca.components_[1,0], pca.components_[1,1],
angles='xy', scale_units='xy', scale=1, width=0.002 )
我做错了什么?
【问题讨论】:
-
您好!我只是想提醒您一下,您应该使用反引号将代码粘贴为实际文本,以便更容易复制粘贴以便其他人调试您的代码。
-
哦,好吧,那我就这么做 --- 完成
标签: python numpy machine-learning pca covariance