【问题标题】:Selecting Best features for ML为 ML 选择最佳特征
【发布时间】:2019-12-02 05:20:44
【问题描述】:
有什么方法可以从数据中提取最佳特征。现在,我正在使用 sklearn 中的“KBest”。
在此,我必须指定需要选择的 K 个最佳特征的数量。
有什么方法可以让我不必指定要提取的特征数量?而是我们提取所有有用的特征?
from sklearn.feature_selection import SelectKBest
test = SelectKBest(score_func=chi2, k=4)
【问题讨论】:
标签:
python
machine-learning
recurrent-neural-network
【解决方案1】:
您可以使用"all" 代替数字
test = SelectKBest(score_func=chi2, k="all")
来自docs
k : int 或“all”,可选,默认=10
要选择的主要功能数量。 “all”选项绕过选择,用于参数
搜索。
【解决方案2】:
选择功能的多种方式。在wiki,你可以找到它们。而且我认为最好的特征选择方法是你对这些特征有深刻的理解。但通常我们很难理解它们。
也许你可以使用 5-Kfold 交叉验证来进行特征重要性排名,然后他们从中选择重要特征。
你也可以使用Embedded方法来选择它,像这样:
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import GradientBoostingClassifier
#Feature selection of GBDT as base model
SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)
值得注意的是,你不能单独删除一个看似无用的特征,因为它可能与其他特征有关。所以特征选择是一个贪婪的搜索过程,通常很耗时。