scikit-learn - MinMaxScaler: TypeError: ufunc 'вычесть' - PullRequest
0 голосов
/ 14 мая 2018

У меня проблема с использованием MinMaxScaler из scikit-learn, я не могу правильно интерпретировать сообщение об ошибке и не могу найти информацию о нем.

TypeError: ufunc 'subtract' output (typecode 'O') could not be coerced to provided output parameter (typecode 'd') according to the casting rule ''same_kind''

Для подгонки я использовал матрицу со следующими форматами: (275, 821), numpy.ndarray, numpy.float64

Правильно преобразованный вывод был: (275, 821), numpy.ndarray, numpy.float64

Мой ввод для «пути назад» с помощью inverse_transform: (206, 821), numpy.ndarray, numpy.float64

Я делал это раньше, и это работало без проблем. Очевидно, что что-то в моих данных теперь другое, чего я не вижу и не связано с форматом? Я был бы счастлив, если бы кто-то мог объяснить сообщение об ошибке или дать мне другой намек на то, что пошло не так.

numpy 1.13.1, панды 0,20,3, scikit-learn 0.19.0, питон 2.7.6

Большое спасибо!


Я обнаружил, что атрибуты MinMaxScalers были сохранены отдельно с помощью joblib. Атрибут min_ выглядит следующим образом: joblib.numpy_pickle.NDArrayWrapper at 0x7fbc302253d0

Для пояснения: я сохраняю скейлер с помощью joblib и загружаю его перед inverse_transform.


### X and Y are two matrices with values between 0-6000

X_frame = pd.DataFrame(X)
Y_frame= pd.DataFrame(Y)

XYdata = pd.concat([X_frame, Y_frame], axis=1)
XYdata = XYdata.as_matrix()
mm = MinMaxScaler((0,1))
XY_new = mm.fit_transform(XYdata)

np.save('data',XY_new)
filename_scaler = 'scaler.sav'
joblib.dump(mm, filename_scaler)

### There's a prediction algorithm in between I can't add because of company restrictions, the code returns the matrix data 

scaler = joblib.load('scaler.sav')
new_data1 = scaler.inverse_transform(data)

1 Ответ

0 голосов
/ 14 мая 2018

Решено.

joblib.dump(mm, filename_scaler, compress =1)

Проблема заключалась в том, что joblib отдельно сохранял все атрибуты скейлера и, очевидно, не загружал их.

Установка уровня сжатия на 1 (True) решила проблему.

Спасибо всем, кто прочитал и / или кто ответил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...