二进制数据集的特征选择(分类)
Feature selection on binary dataset(categorical)
我的数据集有 32 个分类变量和一个数值连续变量(sales_volume)
首先,我使用单热编码 (pd.get_dummies) 将分类变量转换为二进制,现在我有 1294 列,因为每列都有多个分类变量。
现在我想在使用任何降维技术之前减少它们。
什么是 select 最有效变量的最佳选择?
例如;一个分类变量有两个答案 'yes' 和 'no'。是否有可能 'yes' 列具有重要意义而 'no' 列没有什么可解释的?您会删除问题('yes' 和 'no' 列)还是仅删除 'no' 列?
提前致谢。
在 sklearn
上,您可以使用 sklearn.feature_selection.SelectFromModel
,它使您能够将模型拟合到所有特征,并仅选择在该模型中更重要的特征,例如 RandomForest
. get_support()
方法为您提供了重要的功能。
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
clf = RandomForestClassifier()
sfm = SelectFromModel(clf)
sfm.fit(X,y)
sfm.get_support()
我的数据集有 32 个分类变量和一个数值连续变量(sales_volume)
首先,我使用单热编码 (pd.get_dummies) 将分类变量转换为二进制,现在我有 1294 列,因为每列都有多个分类变量。
现在我想在使用任何降维技术之前减少它们。
什么是 select 最有效变量的最佳选择?
例如;一个分类变量有两个答案 'yes' 和 'no'。是否有可能 'yes' 列具有重要意义而 'no' 列没有什么可解释的?您会删除问题('yes' 和 'no' 列)还是仅删除 'no' 列?
提前致谢。
在 sklearn
上,您可以使用 sklearn.feature_selection.SelectFromModel
,它使您能够将模型拟合到所有特征,并仅选择在该模型中更重要的特征,例如 RandomForest
. get_support()
方法为您提供了重要的功能。
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
clf = RandomForestClassifier()
sfm = SelectFromModel(clf)
sfm.fit(X,y)
sfm.get_support()