Что такое 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