Я использую 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 для быстрого вычисления прироста информации.