簡體   English   中英

ModuleNotFoundError:沒有名為“sklearn.preprocessing._data”的模塊

[英]ModuleNotFoundError: No module named '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 版本的情況下解決此問題?

我與使用 Anaconda 的 StandardScaler 有完全相同的錯誤消息。

通過運行修復它:

conda update --all

我認為問題是由於在具有較新版本的 scikit-learn 的機器上運行用於創建縮放器文件的 pickle 轉儲,然后嘗試在具有較舊版本的 scikit-learn 的機器上運行 pickle load 引起的。 (它在使用舊版本 scikit-learn 的機器上運行 pickle load 時出現錯誤,但在使用新版本 scikit-learn 的機器上運行 pickle load 時沒有錯誤。兩台 Windows 機器)。 也許這是由於更新的版本使用不同的下划線函數命名約定(如上所述)?

Anaconda 不允許我自己更新 scikit-learn 庫,因為它聲稱它需要舊版本(由於某種原因我無法理解)。 也許另一個圖書館正在使用它? 所以我不得不通過同時更新所有庫來修復它,這很有效。

通過 pip install -U scikit-learn 升級到兼容版本的 sklearn

當 sklearn 版本不匹配時,會出現這個非常具體的問題。 例如,嘗試反序列化一個 sklearn(>= 0.22.X) 對象轉儲與另一個 sklearn 版本 < 0.22.X。 Sklearn 引入了這些版本之間的更改,請查看他們的發布網站以獲取 mo 信息

安裝舊版本的 sklearn pip install "scikit-learn==0.19.0"

更新 scikit-learn 后,我遇到了類似的問題。 就我而言,罪魁禍首是QuantileTransformer 改變

from sklearn.preprocessing.data import QuantileTransformer

from sklearn.preprocessing import QuantileTransformer

為我工作。

從 sklearn 導入 preprocessing._data 作為 StandardScaler

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM