gpt4 book ai didi

python - 绘制 PCA 的累积解释方差

转载 作者:行者123 更新时间:2023-11-28 19:00:36 28 4
gpt4 key购买 nike

我目前正在为学校布置作业,但有点卡住了。

任务如下:

使用 ax.plot 绘制累积解释方差,并寻找我们可以解释 >90% 方差的分量数量;将其分配给 n_components。

为实现这一点,我获得了以下代码:

import numpy as np


cum_exp_variance = np.cumsum(exp_variance)

print(cum_exp_variance)
fig, ax = plt.subplots()
ax.plot(cum_exp_variance)
ax.axhline(y=0.9, linestyle='--')
n_components = PCA(n_components= 0.9)

pca = PCA(n_components, random_state=10)
pca.fit(scaled_train_features)
pca_projection = pca.transform(scaled_train_features)

但是当我尝试将方差分配给 n_components 变量时,我不断收到错误消息。错误如下:

    TypeError                                 Traceback (most recent call last)
<ipython-input-42-a902c6ee649b> in <module>()
15 # Perform PCA with the chosen number of components and project data onto components
16 pca = PCA(n_components, random_state=10)
---> 17 pca.fit(scaled_train_features)
18 pca_projection = pca.transform(scaled_train_features)

/usr/local/lib/python3.5/dist-packages/sklearn/decomposition/pca.py in fit(self, X, y)
327 Returns the instance itself.
328 """
--> 329 self._fit(X)
330 return self
331

/usr/local/lib/python3.5/dist-packages/sklearn/decomposition/pca.py in _fit(self, X)
382 if max(X.shape) <= 500:
383 svd_solver = 'full'
--> 384 elif n_components >= 1 and n_components < .8 * min(X.shape):
385 svd_solver = 'randomized'
386 # This is also the case of n_components in (0,1)

TypeError: unorderable types: PCA() >= int()

我的猜测是这是一个非常简单的错误,但我似乎无法弄清楚。

非常感谢所有帮助

最佳答案

(我假设您正在使用来自 scikit-learn 的 PCA)。

问题出在您的以下代码行:

n_components = PCA(n_components= 0.9)

现在 n_components 持有一个类型为 PCA 的对象,但这不是您想要的!根据the documentation , n_components 应该是整数、 float 、字符串或无。我想你想做的是:

n_components = 0.9

关于python - 绘制 PCA 的累积解释方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53007951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com