YellowBrick ImportError:无法从“sklearn.utils”导入名称“safe_indexing”
Posted
技术标签:
【中文标题】YellowBrick ImportError:无法从“sklearn.utils”导入名称“safe_indexing”【英文标题】:YellowBrick ImportError: cannot import name 'safe_indexing' from 'sklearn.utils' 【发布时间】:2021-04-12 13:43:15 【问题描述】:我正在尝试为我运行的 K-Means 模型绘制轮廓图,但出现错误:ImportError: cannot import name 'safe_indexing' from 'sklearn.utils
。
我最初遇到了post here 中描述的 NotFoundError 问题,但是一旦我修复了它,我就遇到了这个问题。我的代码如下:
from yellowbrick.cluster import SilhouetteVisualizer
fig, ax = plt.subplots(2, 2, figsize=(15,8))
for i in range(1,6):
kmeans = KMeans(n_clusters=i, init='k-means++', n_init=10, max_iter=100, random_state=0)
q, mod = divmod(i, 2)
visualizer = SilhouetteVisualizer(km, colors='yellowbrick', ax=ax[q-1][mod])
visualizer.fit(ct1)
【问题讨论】:
【参考方案1】:在带有 yellowbrick v1.2 和 scikit-learn v0.23.2 的 python3.7 中,我没有收到错误,但是当我将 scikit-learn 升级到 v0.24.0 时,我得到了相同的 ImportError。
我检查了 API 文档,就像您引用的链接一样,在 sklearn v0.22.0 中,他们将 utils.safe_indexing
弃用为私有 (utils._safe_indexing
)。但是我没有收到安装了 Yellowbrick v1.2 和 v0.22.0utils.safe_indexing,所以如果您只是在 v0.24.0 之前安装了一个 scikit-learn 版本,那么导入应该可以工作。
编辑:这里是 Yellowbrick 的 github issue,如果您想跟踪他们的解决方法或更新此问题的进度
【讨论】:
【参考方案2】:我也遇到过这种情况,说说我的解决办法。
我用了python3.8,yellowbrick v1.2和scikit-learn v0.24.0,然后按照adbailey说的改成了scikit-learn v0.23.2,但是好像没什么变化。
所以,我尝试在“Colab”上运行它。好吧,它现在可以工作了。 Colab的零件要求如下:
...
pandas==1.1.5
scikit-learn==0.22.2
scipy==1.4.1
...
yellowbrick==0.9.1
...
也就是说,参考这个配置是没有问题的。
pip install yellowbrick==0.9.1 scikit-learn==0.22.2
【讨论】:
虽然这可能行得通,但不需要退回到 v0.9。以上是关于YellowBrick ImportError:无法从“sklearn.utils”导入名称“safe_indexing”的主要内容,如果未能解决你的问题,请参考以下文章
Python 中的 Yellowbrick 模块 NotFoundError
yellowbrick牛逼,机器学习“炼丹师”“调参侠”们有福了
ModuleNotFoundError 在 Python 中安装 Yellowbrick