У меня проблема с использованием 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)