По-видимому, приведенный ниже код предназначен для нормализации столбцов в значениях 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 на большие конечные числа.
Но почему это используется здесь? Я не понимаю, зачем нам заменять нули после нормализации данных?
Первый вопрос: он использует широковещательную рассылку numpy.
col_max
иcol_min
— это массивы, которые вычитаются из всего массива по столбцам. Во-вторых: если все значения в столбце одинаковы, нормализация вернетnan
.@MrT Понятно, что касается второй части, так что единственная цель написания этой функции - предотвратить проблемы в случаях, когда некоторые столбцы имеют одинаковые значения в каждой записи?
Или там, где разница между min и max чрезвычайно мала, что, я полагаю, создает переполнение в делении.