我有大量用户安装的所有软件的数据集。我必须根据用户安装的软件将其分类为4个类别之一(每个用户最多可以安装30个软件)。
类别高度不平衡-一种类别包含训练数据集中近45%的用户,另一种类别-35%,三分之一仅15%,第四种-仅5%。假设这4个类别大致对应4种不同的IT职位类型(例如“软件工程师”,“ DevOp”,“分析师”等)。
“软件”是一种具有高基数(大于1000)的功能,因此使用朴素的一键热编码似乎不合适。
我想确定此变量的信息量/水平的子集。例如,诸如防病毒程序之类的软件可能无法在所有类别之间很好地区分,因为所有或大多数用户都将安装该软件。专用工具(例如IDE)可能会更好地区分,即每种IT作业类别中其出现的频率可能都不同。
如何使用python识别此类“信息性”功能?我们是否使用sklearn.feature_selection.chi2?还是我们使用sklearn.feature_selection.mutual_info_classif?还是还有其他方法?