Функция ручной нормализации занимает слишком много времени для выполнения
Я пытаюсь реализовать функцию нормализации вручную, а не использовать функцию scikit learn. Причина в том, что мне нужно определить максимальные и минимальные параметры вручную, а Scikit Learn не допускает этого изменения.
Я успешно реализовал это, чтобы нормализовать значения между 0 и 1. Но это занимает очень много времени для запуска.
Вопрос: Есть ли другой эффективный способ сделать это? Как я могу заставить это исполниться быстрее.
Ниже показан мой код:
scaled_train_data = scale(train_data)
def scale(data):
for index, row in data.iterrows():
X_std = (data.loc[index, "Close"] - 10) / (2000 - 10)
data.loc[index, "Close"] = X_std
return data
2000 и 10 - это атрибуты, которые я определил вручную, а не принимал минимальное и максимальное значение набора данных.
Заранее спасибо.
2 ответа
Почему петля? Вы можете просто использовать
train_data['close'] = (train_data['close'] - 10)/(2000 - 10)
использовать векторизованные функции NumPy. Конечно, вы также можете поместить это в функцию, если хотите.
В качестве альтернативы, если вы хотите изменить масштаб на линейный диапазон, вы можете использовать http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html. Преимущество этого состоит в том, что вы можете сохранить его, а затем изменить масштаб тестовых данных таким же образом.
Используйте матрицу numpy. Вы также можете установить минимальные и максимальные значения вручную.
import numpy as np
data = np.array(df)
_min = np.min(data, axis=0)
_max = np.max(data, axis=0)
normed_data = (data - _min) / (_max - _min)