Как использовать масштабатор max_min в Python

#python #pandas #scaling

#питон #панды #пересчет

Вопрос:

У меня есть фрейм данных панд:

 from sklearn.preprocessing import MinMaxScaler  data = pd.DataFrame({'x': [1,2,3,4,5],  'name': ['jo', 'ellen','jo', 'ellen' ,'jo' ]} )   min_max_scaler = MinMaxScaler() data['scaled_x'] = dataframe.groupby('name')['x'].transform(lambda x: min_max_scaler.fit_transform(x))  

Я не могу заставить его работать.. как мне масштабировать по имени?

Ответ №1:

Многие функции sklearn ожидают 2D-ввода, даже если это только 1D-данные. Вам нужно преобразовать вашу серию в фрейм данных с to_frame помощью . Затем вам нужно преобразовать выходные данные обратно в 1D с помощью ravel :

 data['scaled_x'] = data.groupby('name')['x'].transform(lambda c: min_max_scaler.fit_transform(c.to_frame()).ravel())  

выход:

 x name scaled_x 0 1 jo 0.0 1 2 ellen 0.0 2 3 jo 0.5 3 4 ellen 1.0 4 5 jo 1.0