![](/img/trans.png)
[英]ModuleNotFoundError: No module named 'sklearn.preprocessing'
[英]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.