Использование функции immortal_info_classif () sklearn для фильтрации функций по заданным c значениям прироста информации - PullRequest
0 голосов
/ 13 июля 2020

Я использую sklearn для классификации и в настоящее время хочу отфильтровать большой смешанный набор дискретных и непрерывных функций, указав c диапазон значений прироста информации (т.е. "). В настоящее время я смотрю на mutual_info_classif(), так как читал, что он дает эквивалент получения информации для этой цели. Однако, когда я попробовал использовать следующий код, результат может быть больше 1.

import pandas
from pandas import DataFrame
from sklearn.feature_selection import mutual_info_classif

df_features = DataFrame(data={'colA' : [1,1,1,1,1,0,0,0,0,0], 
                              'colB': [1,0,1,0,1,0,1,0,1,0],
                             'colC' : [1,1,1,1,1,0,0,0,0,0],
                             'colD' : [1,1,1,0,1,0,0,0,1,0]})
labels = [1,1,1,1,1,0,0,0,0,0]
columns_info_gain = list(zip(df_features.columns, mutual_info_classif(df_features, labels)))
for c in columns_info_gain:
    print(c)

Результат для colA - colD (с округлением): 1,29, 0,00, 1,50, 0,58 соответственно. Поскольку AFAIK диапазон значений прироста информации составляет от 0 до 1, мне интересно, верен ли мой подход.

Помимо этого, я также очень признателен за предложения относительно библиотек Python для быстрого вычисления прироста информации.

...