Я нормализую исходные данные, просто вычитая среднее и деля на стандартное отклонение при тестировании различных алгоритмов, таких как логистическая регрессия, гауссовский наивный байесовский метод, случайный лес и многослойный персептрон. Это не обязательно для всех из них, но я просто пытаюсь быть последовательным. Но матрицы корреляции для признаков меняются до и после нормализации. При принятии решения о том, какие функции выбрать, чтобы избежать избыточности входных данных, следует ли учитывать обе корреляционные матрицы или только одну после нормализации, поскольку эти данные напрямую передаются методам машинного обучения?
Выбор признаков с помощью корреляционной матрицы
Ответы (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
Да, верно — можно показать, что корреляция этой нормализованной величины эквивалентна исходной. Я по ошибке использовал масштабное преобразование для предыдущего набора данных, чтобы нормализовать мои новые данные. Спасибо за чек!
- person Mathews24; 19.06.2018