Python DeprecationWarning: Передача 1d массивов, поскольку данные устарели в 0,17 и вызовет ValueError в 0,19

Исходя из моего предыдущего вопроса, столбец стандартизации Python Pandas для регрессии я изменяю масштаб определенных столбцов в моем фрейме данных, чтобы быть между 0 и 1.

scaler = preprocessing.MinMaxScaler(feature_range=(0,1))
email['scaled_quantity'] = scaler.fit_transform(email['Quantity'])

К сожалению, я получаю эту ошибку

DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.
  warnings.warn(DEPRECATION_MSG_1D, DeprecationWarning)

@Grr предложил применить масштабирование ко всему фрейму данных, но это не вариант. Мне нужно поддерживать столбцы такими, какие они есть, и хочу только добавлять новые дополнительные масштабированные столбцы.

Как я могу устранить эту ошибку амортизации?

1 ответ

Решение

Что делать

scaler.fit_transform(email[['Quantity']])

вместо

scaler.fit_transform(email['Quantity'])

Демонстрация: я использовал ваш пример данных из предыдущего вопроса:

In [56]: scaler.fit_transform(df[['Event_Counts']])
Out[56]:
array([[ 0.99722347],
       [ 1.        ],
       [ 0.        ]])

Обратите внимание - он создал массив с формой (3,1) вместо (3,)

как новый столбец:

In [58]: df['scaled_event_counts'] = scaler.fit_transform(df[['Event_Counts']])

In [59]: df
Out[59]:
       Date  Event_Counts  Category_A  Category_B  scaled_event_counts
0  20170401        982457           0           1             0.997223
1  20170402        982754           1           0             1.000000
2  20170402        875786           0           1             0.000000
Другие вопросы по тегам