首页 > 解决方案 > YellowBrick ImportError:无法从“sklearn.utils”导入名称“safe_indexing”

问题描述

我正在尝试为我运行的 K-Means 模型绘制轮廓图,但是,我得到了错误:ImportError: cannot import name 'safe_indexing' from 'sklearn.utils.

我最初在这里遇到了这篇文章中描述的 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)

标签: pythonscikit-learnyellowbrick

解决方案


在带有 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.0<=sklearn<=v0.23.2 时,我没有收到导入错误。我认为他们终于utils.safe_indexing在 v0.24.0 中删除了公众,所以如果你只是在 v0.24.0 之前安装了一个 scikit-learn 版本,那么导入应该可以工作。

编辑:这里是 Yellowbrick 的 github问题,如果您想跟踪他们的解决方法或更新此问题的进度


推荐阅读