Запутался с этой простой функцией нормализации

avatar
Huzo
8 апреля 2018 в 10:40
94
0
0

По-видимому, приведенный ниже код предназначен для нормализации столбцов в значениях x.

#normalize columns
def normalize_cols(m):
    col_max = m.max(axis=0)
    col_min = m.min(axis=0)
    return (m-col_min)/(col_max - col_min)

x_vals_train = np.nan_to_num(normalize_cols(x_vals_train))
x_vals_test = np.nan_to_num(normalize_cols(x_vals_test))

Однако я немного запутался.

Во-первых, нормализует ли функция данные по столбцам? Если да, то как и почему? (Поскольку мы вводим сразу все столбцы.)

Во-вторых, документация np.nan_to_num говорит, что:

Замените nan на ноль, а inf на большие конечные числа.

Но почему это используется здесь? Я не понимаю, зачем нам заменять нули после нормализации данных?

Источник
Mr. T
8 апреля 2018 в 11:14
1

Первый вопрос: он использует широковещательную рассылку numpy. col_max и col_min — это массивы, которые вычитаются из всего массива по столбцам. Во-вторых: если все значения в столбце одинаковы, нормализация вернет nan.

Huzo
8 апреля 2018 в 11:27
0

@MrT Понятно, что касается второй части, так что единственная цель написания этой функции - предотвратить проблемы в случаях, когда некоторые столбцы имеют одинаковые значения в каждой записи?

Mr. T
8 апреля 2018 в 11:29
1

Или там, где разница между min и max чрезвычайно мала, что, я полагаю, создает переполнение в делении.

Ответы (0)