我正在尝试做Udacity迷你项目,并且安装了最新版本的SKLearn库(20.2)。
当我运行时:
from sklearn.decomposition import RandomizedPCA
我收到错误:
ImportError: cannot import name 'RandomizedPCA' from 'sklearn.decomposition' (/Users/kintesh/Documents/udacity_ml/python3/venv/lib/python3.7/site-packages/sklearn/decomposition/__init__.py)
实际上,我什至使用以下方法升级了版本:
pip3 install -U scikit-learn
从0.20.0
升级到0.20.2
,也卸载并重新安装...所以我不确定为什么它不能初始化sklearn.decomposition
.
这里有没有任何解决方案可能不会导致从我的机器上完全卸载 python3?!理想情况下希望避免这种情况。
任何帮助将不胜感激!
编辑:
我正在做一些挖掘并试图解决这个问题,似乎 SKLearn GitHub 上decomposition
库中的__init__.py
文件没有引用RandomizedPCA
......它被删除了还是什么?
链接到 GitHub 页面
事实证明,RandomizePCA()
在旧版本的 SKLearn 中被折旧,只是 PCA()
中的一个参数。
您可以通过将导入语句更改为以下语句来解决此问题:
from sklearn.decomposition import PCA as RandomizedPCA
。然后你的分类器看起来像这样:
pca = RandomizedPCA(n_components=n_components, svd_solver='randomized', whiten=True).fit(X_train)
但是,如果您因为正在学习 Udacity 机器学习课程而在这里 Eigenfaces.py
,您会注意到 PIL
库也被弃用。
但这里是 GitHub 问题页面,这里有一个善良的灵魂,当这些存储库工作时,他们使用 Jupyter Notebook 来解决他们的小项目。
我希望这有所帮助,并为下一个人进入机器学习提供足够的信息。如果我有时间,我可能会尝试重新编码eigenfaces.py
SKLearn 0.20.2
,但现在我只是要破解本课程的其余部分。
除了@Aaraeus所说的之外,PIL library
还分叉到Pillow
。您可以使用以下方法修复PIL
导入错误
pip3 install pillow