ModuleNotFoundError:没有名为“sklearn.preprocessing._data”的模块

新手上路,请多包涵

我的问题与 类似。

我还使用 pickle 来保存和加载模型。我在 pickle.load( ) 期间遇到以下错误

from sklearn.preprocessing import StandardScaler
# SAVE
scaler = StandardScaler().fit(X_train)
X_trainScale = scaler.transform(X_train)
pickle.dump(scaler, open('scaler.scl','wb'))

# =================
# LOAD
sclr = pickle.load(open('scaler.scl','rb'))  # => ModuleNotFoundError: No module named 'sklearn.preprocessing._data'
X_testScale = sclr.transform(X_test)

ModuleNotFoundError:没有名为“sklearn.preprocessing._data”的模块

看起来像是 sklearn 版本问题。我的sklearn版本是0.20.3,Python版本是3.7.3。

但我在 Anaconda .zip 文件中使用 Python。是否可以在 更新 sklearn 版本的情况下解决这个问题?

原文由 TJCLARK 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

我在使用 Anaconda 的 StandardScaler 中收到了完全相同的错误消息。

通过运行修复它:

 conda update --all

我认为问题是由于运行 pickle dump 以在具有较新版本的 scikit-learn 的机器上创建缩放器文件,然后尝试在具有较旧版本的 scikit-learn 的机器上运行 pickle load 引起的。 (在使用较旧版本的 scikit-learn 的机器上运行 pickle load 时出现错误,但在使用较新版本的 scikit-learn 的机器上运行 pickle load 时没有错误。两台 Windows 机器)。也许这是由于更新版本对有关下划线的函数使用了不同的命名约定(如上所述)?

Anaconda 不允许我自己更新 scikit-learn 库,因为它声称它需要旧版本(出于某种原因我无法理解)。也许另一个图书馆正在使用它?所以我不得不通过同时更新所有库来修复它,这很有效。

原文由 Clerin 发布,翻译遵循 CC BY-SA 4.0 许可协议

通过以下方式升级到 sklearn 的兼容版本:pip install -U scikit-learn

原文由 Yuchao Jiang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题