Как выполнить стандартизацию данных временных рядов с помощью Scikit-learn Standard Scaler? - PullRequest
0 голосов
/ 31 октября 2018

Я использую Керас , поэтому форма данных (batch_size, timesteps, input_dim). А Standard Scaler просто подходит для 2D-данных.

Мне показалось, что одним из решений было частичное подгонка, а затем преобразование.

scaler = StandardScaler()
for sample in range(data.shape[0]):
    scaler.partial_fit(data[sample])

for sample in range(data.shape[0]):
    data[sample] = scaler.transform(data[sample])

Это правильный / эффективный подход?

1 Ответ

0 голосов
/ 31 октября 2018

У вас есть две возможности

data = np.random.randn(batch_size*time_length*nb_feats).reshape((bsize,time,feats))

Версия 1 делает то, что вы говорите:

scaler = StandardScaler()
for sample in range(data.shape[0]):
    scaler.partial_fit(data[sample])

for sample in range(data.shape[0]):
    data[sample] = scaler.transform(data[sample])

Другая возможность (версия 2) - сгладить массив, подогнать и преобразовать, а затем изменить его форму

scaler = StandardScaler()
data   = scaler.fit_transform(data.reshape((bsize*time,feats))).reshape((bsize,time,feats))

В моем компьютере

Версия 1 занимает 0,8759770393371582 секунд

Версия 2 занимает 0.11733722686767578 секунд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...