我对mutual_info_classif函数作为一种特征选择方法的参数有疑问。
我有一个二项式目标Y,它采用值(0,1)和X-特征的混合类型.这些特征是二项式(0,1),连续的和范畴的。在范畴内,我有序数特征(例如,低、中、高编码为1,2,3)和非序数(例如,部门名称是一个热编码)。
据我所知,我可以为我的分类特性设置discrete_features = True,为我的数值(连续)特性设置discrete_features=False。discrete_features = 'auto‘是什么意思?它会把我的连续和有序的特征看作是密集的(假的)和一个热编码的特征为稀疏的(真)吗?
有人能澄清在我的情况下如何设置参数值吗?
谢谢。
发布于 2022-01-25 10:55:42
如果设置discrete_features = 'auto'
,则如果输入稀疏,则确定discrete_features = True。如果您的输入是密集的,它将其视为连续的。
例如,如果我们运行cat特性,指定discrete_features=True
:
from sklearn.feature_selection import mutual_info_classif
from scipy.sparse import csr_matrix
import numpy as np
np.random.seed(111)
target = np.random.binomial(1,0.5,20)
cat_feature = np.random.binomial(3,0.5,(20,2))
mutual_info_classif(cat_feature,target,discrete_features=True)
array([0.03219502, 0.00257154])
它不同于指定为False:
mutual_info_classif(cat_feature,target,discrete_features=False)
array([0, 0])
现在,如果使用“auto”与discrete_features=False
相同,因为输入很密集:
mutual_info_classif(cat_feature,target,discrete_features='auto')
array([0, 0])
我们使输入稀疏,得到与指定discrete = False
相同的输出:
cat_feature = csr_matrix(cat_feature)
type(cat_feature)
scipy.sparse.csr.csr_matrix
mutual_info_classif(cat_feature,target,discrete_features="auto")
Out[42]: array([0.03219502, 0.00257154])
您有此选项,因为我们通常会对分类特性进行编码,而稀疏矩阵则更适合于给定零点的数量。
https://stackoverflow.com/questions/70820610
复制相似问题