YellowBrick ImportError: cannot import name 'safe_indexing' from 'sklearn.utils'
YellowBrick ImportError: cannot import name 'safe_indexing' from 'sklearn.utils'
我正在尝试为我 运行 的 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)
在 python3.7 中,使用 yellowbrick v1.2 和 scikit-learn v0.23.2 我没有收到错误,但是当我将 scikit-learn 升级到 v0.24.0 时,我得到了相同的 ImportError。
我检查了 API 文档,就像在您引用的 link 中一样,在 sklearn v0.22.0 中,他们将 utils.safe_indexing
弃用为私有 (utils._safe_indexing
) .但是我没有收到安装了 yellowbrick v1.2 和 v0.22.0<=sklearn<=v0.23.2 的导入错误。我认为他们最终删除了 v0.24.0 中的 public utils.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部分要求如下:
...
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
我正在尝试为我 运行 的 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)
在 python3.7 中,使用 yellowbrick v1.2 和 scikit-learn v0.23.2 我没有收到错误,但是当我将 scikit-learn 升级到 v0.24.0 时,我得到了相同的 ImportError。
我检查了 API 文档,就像在您引用的 link 中一样,在 sklearn v0.22.0 中,他们将 utils.safe_indexing
弃用为私有 (utils._safe_indexing
) .但是我没有收到安装了 yellowbrick v1.2 和 v0.22.0<=sklearn<=v0.23.2 的导入错误。我认为他们最终删除了 v0.24.0 中的 public utils.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部分要求如下:
...
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