ModuleNotFoundError: нет модуля с именем 'sklearn.preprocessing._data' - PullRequest
1 голос
/ 19 февраля 2020

Мой вопрос похож на это .

Я также использую рассол для сохранения и загрузки модели. Я сталкиваюсь с приведенной ниже ошибкой во время 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.

Но я использую Python в файле .zip Anaconda. Можно ли решить эту проблему без обновления версии sklearn?

1 Ответ

2 голосов
/ 29 марта 2020

У меня было точно такое же сообщение об ошибке с StandardScaler, использующим Anaconda.

Исправлено, запустив:

conda update --all

Я думаю, что проблема была вызвана запуском дампа для создания файла масштабирования на машине с более новой версией scikit-learn, а затем пытаюсь запустить маринованную загрузку на машине с более старой версией scikit-learn. (Это выдает ошибку при запуске pickle load на машине с более старой версией scikit-learn, но не выдает ошибку при запуске pickle load на машине с более новой версией scikit-learn. Обе windows машины). Возможно, это связано с тем, что в более поздних версиях используется другое соглашение об именах для функций, связанных с подчеркиванием (как упомянуто выше)?

Anaconda не позволила бы мне обновлять библиотеку scikit-learn самостоятельно, поскольку утверждала, что для этого требуется более старая версия (почему-то я не мог понять). Возможно другая библиотека использовала это? Поэтому мне пришлось исправить это, обновив все библиотеки одновременно, и это сработало.

...