MinMaxScaler из sklearn в цикле?

#python #scikit-learn

#python #scikit-учиться

Вопрос:

Я сделал:

 Scaler = MinMaxScaler()
for Key in Data:
    Columns = Data[Key].columns
    ScaledData = Scaler.fit_transform(Data[Key])
    Data[Key] = pd.DataFrame(ScaledData, columns=Columns)
  

Коллега сказал мне поместить MinMaxScaler в цикл, который будет инициализироваться каждый раз.

Это действительно необходимо?

Ответ №1:

Нет, вам не нужно, метод, который вы использовали fit_transform , подразумевает, что он подходит, а затем преобразуется, например:

 from sklearn.preprocessing import MinMaxScaler
Scaler = MinMaxScaler()
np.random.seed(99)
Data = pd.DataFrame({'a':np.random.uniform(0,1,5),'b':np.random.uniform(1,2,5)})
Data

    a   b
0   0.672279    1.565617
1   0.488078    1.297622
2   0.825495    1.046696
3   0.031446    1.990627
4   0.808050    1.006826

df = pd.DataFrame()
for Key in Data.columns:
    df[Key] = Scaler.fit_transform(Data[[Key]]).ravel()
    print("column is "  key   " min /max :"   str(Scaler.data_min_[0])   " "   str(Scaler.data_max_[0]))


column is a min /max :0.031446387626298145 0.8254951740358963
column is a min /max :1.0068257330436552 1.9906273994707961
  

Масштабированный фрейм данных равен:

     a   b
0   0.807044    0.567992
1   0.575068    0.295585
2   1.000000    0.040526
3   0.000000    1.000000
4   0.978030    0.000000