MinMax Scaler в списке данных - PullRequest
       49

MinMax Scaler в списке данных

0 голосов
/ 13 января 2019

У меня есть список фреймов данных (все фреймы данных имеют одинаковые числовые столбцы, представляют разные результаты одного и того же теста. Я хочу, чтобы они были разделены). Я хочу обучить scikit MinMaxScalar , который будет учитывать минимальные и максимальные значения для каждого столбца из всех данных. Может у кого-нибудь есть решение этого вопроса?

Спасибо

MAK

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вы хотите сделать следующее:

  1. создать временный DataFrame tmp как объединение всех ваших DF из списка
  2. соответствует объекту MinMaxScaler на tmp DF
  3. масштабировать (преобразовывать) все DFs в списке, используя приспособленный MinMaxScaler объект

UPDATE:

Может быть, у вас есть предложение для обучения без создания темп dataframe

мы можем использовать метод .partial_fit(), чтобы итеративно подбирать данные из всех DF:

создание списка образцов DF:

In [100]: dfs = [pd.DataFrame(np.random.rand(3,3)*100 - 50) for _ in range(3)]

In [101]: dfs[0]
Out[101]:
           0          1          2
0  45.473162  42.366712  41.395652
1 -35.476703  43.777850 -36.363200
2   0.479528  14.861075   4.196630

In [102]: dfs[2]
Out[102]:
           0          1          2
0   6.888876 -24.454986 -39.794309
1  -8.988094 -34.426252 -24.760782
2  34.317689 -43.644643  44.243769

Масштабирование:

In [103]: from sklearn.preprocessing import MinMaxScaler

In [104]: mms = MinMaxScaler()

In [105]: _ = [mms.partial_fit(df) for df in dfs]

In [106]: scaled = [mms.transform(df) for df in dfs]

результат:

In [107]: scaled[0]
Out[107]:
array([[1.        , 0.9838584 , 0.91065751],
       [0.07130264, 1.        , 0.03848462],
       [0.48381052, 0.66922958, 0.49341912]])

In [108]: scaled[1]
Out[108]:
array([[0.53340314, 0.8729412 , 0.62360548],
       [0.        , 0.39480025, 1.        ],
       [0.04767918, 0.10412712, 0.95859434]])

In [109]: scaled[2]
Out[109]:
array([[0.55734177, 0.2195048 , 0.        ],
       [0.37519322, 0.10544644, 0.16862177],
       [0.87201883, 0.        , 0.94260309]])
0 голосов
/ 13 января 2019

Посмотрите на описание методов MinMaxScaler , например. в https://scikit -learn.org / стабильный / модули / полученные / sklearn.preprocessing.MinMaxScaler.html

fit(X[, y])     Compute the minimum and maximum to be used for later scaling.
transform(X)    Scaling features of X according to feature_range.

Итак, предполагая, что ваш список DataFrames находится в dfList, вероятно, вам следует:

  • Вызовите fit(pd.concat(dfList)), чтобы установить минимальные / максимальные значения на основе результата все эксперименты.
  • Затем вызовите transform(...) на каждом кадре данных.

Обратите внимание, что не существует явного создания какой-либо временной таблицы, содержащей объединенные результаты всех экспериментов.

...