YellowBrick ImportError:无法从“sklearn.utils”导入名称“安全索引”

2024-05-15 01:08:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为我运行的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)

Tags: namefrom模型importmodinit错误绘制
2条回答

在python3.7中,使用yellowbrick v1.2和scikit learn v0.23.2,我没有得到错误,但是当我将scikit learn提升到v0.24.0时,我得到了相同的错误

我检查了API文档,就像在您引用的链接中一样,在sklearnv0.22.0中,他们不赞成将utils.safe_indexing转换为private(utils._safe_indexing)。但是我没有在yellowbrick v1.2和v0.22.0中得到导入错误<=sklearn<=已安装v0.23.2。我认为他们最终删除了v0.24.0中的public utils.safe_indexing,因此如果您只安装了版本为scikit learn的v0.24.0之前的版本,导入应该可以工作

编辑:如果您想跟踪yellowbrick的githubissue在解决此问题的方法或更新方面的进度,请参见此处

我也遇到过这种情况,并讨论了我的解决方案

我使用了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

相关问题 更多 >

    热门问题