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