Деление каждой строки в фрейме данных на вектор в Python

#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