PCA - больше, чем просто уменьшение размеров.

Анализ главных компонентов известен как один из самых популярных методов уменьшения размерности. Однако немногие знают, что у него есть очень интересное свойство - уменьшенные данные можно вернуть к исходному измерению. Более того, данные, возвращенные к исходному размеру, более очищены. Итак, в Sigmoid мы решили создать модуль, чтобы легко применять это свойство к фреймам данных pandas.

Использование PCAFilter из библиотеки Kydavra.

Анализ главных компонентов - это метод уменьшения размеров, который сокращает ваш фрейм данных до n предопределенных столбцов, однако, в отличие от LDA, он не принимает во внимание целевой вектор.

Теперь посмотрим, как это работает. Во-первых, как обычно, давайте установим kydavra, если вы еще этого не сделали. (Убедитесь, что у вас версия 0.2.x).

pip install kydavra

Затем мы должны создать abject и применить его к набору данных Hearth Disease UCI.

from kydavra import PCAFilter
filt = PCAFilter()
new_df = filt.reduce(df, 'target')

Применение настройки фильтра по умолчанию к набору данных UCI Hearth Disease не сильно изменит фрейм данных, поэтому я рекомендую вам сначала стандартизировать данные, прежде чем передавать их фильтру.

Также мы настоятельно рекомендуем вам найти лучшее количество n_components:

for i in range(1, len(X[0])):
    filt = PCAFilter(n_components=i)
    new_df = filt.filter(df, 'target')
    X = new_df.iloc[:, :-1].values
    y = new_df['target'].values
    print(f"{i} - {np.mean(cross_val_score(logit, X, y))}")

Итак, этот код на стандартизированных данных дает следующий результат:

1 - 0.801952861952862
2 - 0.7945454545454546
3 - 0.8092255892255892
4 - 0.8383164983164983
5 - 0.841952861952862
6 - 0.8274074074074076
7 - 0.8236363636363636
8 - 0.8200673400673402
9 - 0.8200673400673402
10 - 0.8274074074074076
11 - 0.842087542087542
12 - 0.8311111111111111

Как мы видим, наилучшее количество компонентов - 11. cross_val_score модели без фильтрации и стандартизации данных - 0,823. Применяя другие селекторы от kydavra, вы можете еще больше повысить точность.

Как это работает?

PCAFIlter внутренне использует алгоритм PCA. Вначале фильтр снижает размерность данных (без целевого столбца). После этого данные возвращаются к исходным размерам, благодаря чему уходит много шума.

Если вы использовали или пробовали Кидавру, мы настоятельно приглашаем вас заполнить эту форму и поделиться своим опытом.

Сделано с ❤ от Sigmoid.

Ресурс: