#python #python-3.x #dataframe #vector #feature-scaling
#python #python-3.x #фрейм данных #вектор #функция-масштабирование
Вопрос:
Я масштабирую свои данные перед логистической регрессией.
Все работает идеально, пока я не попытаюсь разделить столбцы вектором max_min. Похоже, что это сработало в каждом столбце, но не в столбце age, но я, похоже, не могу понять, почему.
Ранее я разделил данные для тестирования и обучения, и ниже я пытаюсь масштабировать данные X_train.
# Working out the min value for each column and subtracting this from each row in the data
X_train_min = np.array(X_train0.min())
X_train0.sub(X_train_min.squeeze(), axis=1)
Из приведенного выше кода я получаю таблицу, в которой для каждого значения было вычтено минимальное значение его столбца, что является правильным.
Вывод:
вывод
# Working out the max value for each column and the difference between the max and min values
X_train_max = np.array(X_train0.max())
max_min = np.array(X_train0.max()) - np.array(X_train0.min())
print(max_min)
Вывод:
[ 56 1 3 2 4 3 18174 56 7]
Вот где я сталкиваюсь с проблемой:
# Dividing each row in the data by the difference between the max and min values of its column
X_train0.div(max_min, axis=1)
Я получил таблицу, в которой каждое значение было разделено на вектор, кроме первого столбца «Возраст», где числа не соответствуют делению.
Вывод:
вывод
Ответ №1:
Вы делите на max - min
то, когда min
уже вычитается. Все, что вам нужно, это просто разделить на новый max:
max_min = np.array(X_train0.max())
Комментарии:
1. Формула, которую я нашел для масштабирования объектов, равна (x-min) / (max-min)
2. @RebeccaStephens это верно, только если вы берете как max, так и min перед применением формулы. Из вашего кода похоже, что вы вычисляете max после вычитания min