微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

YellowBrick 导入错误:无法从“sklearn.utils”导入名称“safe_indexing”

如何解决YellowBrick 导入错误:无法从“sklearn.utils”导入名称“safe_indexing”

我正在尝试为我运行的 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)

解决方法

在带有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,如果您想跟踪他们的解决方法或更新此问题的进度

,

我也遇到过这种情况,说说我的解决方法

我用的是python3.8、yellowbrick v1.2和scikit-learn v0.24.0,然后我按照adbailey说的改成了scikit-learn v0.23.2,但好像没什么变化。

所以,我尝试在“Colab”上运行它。嗯,它现在有效。 Colab的部分要求如下:

pip install yellowbrick==0.9.1 scikit-learn==0.22.2

也就是说,参考这个配置是没有问题的。

ngAfterViewInit() { this.qrScannerComponent.getMediaDevices().then((devices) => { console.log(devices); const videoDevices: MediaDeviceInfo[] = []; for (const device of devices) { if (device.kind.toString() === 'videoinput') { videoDevices.push(device); } } if (videoDevices.length > 0) { let chosenDev; for (const dev of videoDevices) { if (dev.label.includes('front')) { chosenDev = dev; break; } } if (chosenDev) { this.qrScannerComponent.chooseCamera.next(chosenDev); } else { this.qrScannerComponent.chooseCamera.next(videoDevices[0]); } } }); this.qrScannerComponent.capturedQr.subscribe((result) => { console.log(result); });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。