Что такое ICAFilter?

Это фильтр, использующий алгоритм Fast ICA. В отличие от PCA, который уменьшает размеры, анализ независимых компонентов разлагает смешанные сигналы. После этого он приносит отфильтрованную форму кадра данных pandas в виде независимых негауссовых сигналов.

ICA найдет эти независимые компоненты, также называемые источниками, факторами или скрытыми переменными, из переменных данных, которые считаются линейными смесями. Вот почему ICA считается более мощной техникой.

Использование Kydavra ICAfilter.

Давайте сначала установим kydavra, набрав следующую строку. (Убедитесь, что у вас версия 0.3).

pip install kydavra

Далее импортируем фильтр:

from kydavra import ICAFilter

Теперь мы импортируем набор данных Heart Disease UCI dataset.

import pandas as pd
df = pd.read_csv('heart.csv')

Давайте создадим объект и применим его к нашему набору данных.

for i in range(1, 10):
    ica_filt = ICAFilter(n_components=i)
    new_df = ica_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.5314207650273224
2 - 0.7095628415300547
3 - 0.6998907103825136
4 - 0.6998907103825136
5 - 0.7954098360655737
6 - 0.8084153005464481
7 - 0.8051366120218578
8 - 0.8381420765027322
9 - 0.8380874316939891

Из следующего вывода мы видим, что лучший показатель cross_val_score равен 0,838. Также рекомендуем попробовать другие селекторы от kydavra для более высокой точности.

Сделано с помощью ❤ от Sigmoid.

Подпишитесь на нас в Facebook, Instagram и LinkedIn:

https://www.facebook.com/sigmoidAI

https://www.instagram.com/sigmo.ai/

https://www.linkedin.com/company/sigmoid/