Выбор признаков с помощью корреляционной матрицы

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


person Mathews24    schedule 19.06.2018    source источник


Ответы (1)


Я думаю, что матрица корреляции должна остаться прежней после «правильной» нормализации.

Демо:

In [107]: df = pd.DataFrame(np.random.rand(6,6)) * 100

давайте сохраним корреляционную матрицу Пирсона до нормализации

In [108]: corr1 = df.corr()

нормализация с использованием sklearn.preprocessing.StandardScaler:

In [109]: from sklearn.preprocessing import StandardScaler

In [110]: scale = StandardScaler()

In [111]: r = scale.fit_transform(df)

сохранить матрицу корреляции Пирсона после нормализации

In [112]: corr2 = pd.DataFrame(r).corr()

сравнить сохраненные матрицы корреляции:

In [114]: np.allclose(corr1, corr2)
Out[114]: True
person MaxU    schedule 19.06.2018
comment
Да, верно — можно показать, что корреляция этой нормализованной величины эквивалентна исходной. Я по ошибке использовал масштабное преобразование для предыдущего набора данных, чтобы нормализовать мои новые данные. Спасибо за чек! - person Mathews24; 19.06.2018