Почему масштабирование по строкам, а не по столбцам для стандартизации (предварительной обработки) данных перед кластеризацией - PullRequest
0 голосов
/ 26 июня 2018

Я очень смущен и не смог найти убедительных ответов в Интернете на следующий вопрос, касающийся кластеризации предварительной обработки данных.

Согласно документации Python

http://scikit -learn.org / stable / modules / preprocessing.html

, когда мы выполняем предварительную обработку с использованием встроенной команды в библиотеке sckit learn, учитывая, что данные сформулированы в виде матрицы N x D, где строки - это примеры, а столбцы - этоПризнаки, мы делаем среднее значение по строкам равным нулю, и в то же время стандартное отклонение по строкам равно единице, как показано ниже:

X_scaled.mean(axis=0)
array([ 0.,  0.,  0.])

X_scaled.std(axis=0)
array([ 1.,  1.,  1.])

У меня вопрос, не должны ли мы сделать среднее значение по столбцу(функции вместо образцов) равны нулю и то же самое для стандартного отклонения, поскольку мы пытаемся стандартизировать функции, а не образцы.Веб-сайты и другие ресурсы всегда стандартизированы по строкам, но они никогда не объясняют, почему?

Буду благодарен, если кто-нибудь сможет это объяснить.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

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

Склеарна Normalizer сделан для нормализации выборки и может нормализоваться до l1 или l2 нормы.

http://scikit -learn.org / stable / modules / Генерируемый / sklearn.preprocessing.Normalizer.html

0 голосов
/ 26 июня 2018

Я ожидаю, что вы захотите нормализовать значения для данной функции по выборкам.Если вы нормализуете данные данного образца по его функциям, вы выбросили много информации.Это было бы для сравнения объектов (что редко имеет смысл), а не для сравнения образцов для объекта.

Я не знаю numy или sklearn, так что примите это с недоверием, но при нормализации выхотите нормализовать (используя те же параметры) все данные для данного объекта, чтобы привести все значения для этого объекта в диапазон (-1 ... +1) со средним значением, равным нулю (или что-то в этом роде).Вы сделали бы это отдельно для каждой функции, так что все они окажутся в этом диапазоне со средним значением каждой функции в нуле.

Рассмотрим пример, если вы нормализовали все функции для данного образца.

        height weight age
person1 180    65     50
person2 140    45     50

Если мы нормализуем значения для person1 по всем функциям, а затем сделаем то же самое для person2, тогда у person2 будет возраст, отличный от person1!

Если мы нормализуем по всемувыборки для данного столбца, то отношения по-прежнему сохраняются.Их возраст будет соответствовать;person1 будет выше, а person2 будет весить меньше.Но все значения для всех функций будут соответствовать правилам распределения, необходимым для последующего анализа.

...