我有一个数据框,其中包含price_range(target_attribute)和其他功能列。我有一个问题,要求我找到可能特征的最小子集(最小特征列数),以使模型的得分超过0.4
现在,我的想法是逐一删除要素列,以查看模型的分数何时最接近0.4。那正确吗?如何在数据框中一一删除列?
答案 0 :(得分:1)
您使用哪种ML模型?基于树的模型(例如“梯度增强”和“随机森林”)具有“功能重要性”度量,可以用来做到这一点。您可以将模型与所有功能配合使用,选中clf.feature_importances_
,然后尝试删除得分较低的功能。
您可以在此处查看文档:{{3}}
另一种选择是遵循@Matt所说的,并使用诸如递归功能消除here之类的方式:
from sklearn.feature_selection import RFE
rfe = RFE(estimator=svc, n_features_to_select=1, step=1)
rfe.fit(X, y)
ranking = rfe.ranking_
最后一种更简单的方法是删除方差太低的特征。直觉是,通常,具有低方差的功能对帮助您的模型区分类的作用不大。您必须设置方差的阈值,才能保留在数据集中。 Here is a simple example是使用sklearn的方法:
from sklearn.feature_selection import VarianceThreshold
X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]
sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
sel.fit_transform(X)
请注意,这些示例来自有关功能选择的sklearn This。
答案 1 :(得分:0)