keras模型的特征选择
Feature selection on a keras model
我试图找到主导回归模型输出的最佳特征,以下是我的代码。
seed = 7
np.random.seed(seed)
estimators = []
estimators.append(('mlp', KerasRegressor(build_fn=baseline_model, epochs=3,
batch_size=20)))
pipeline = Pipeline(estimators)
rfe = RFE(estimator= pipeline, n_features_to_select=5)
fit = rfe.fit(X_set, Y_set)
但是当 运行 时出现以下运行时错误。
RuntimeError: The classifier does not expose "coef_" or "feature_importances_" attributes
如何解决这个问题以及 select 我的模型的最佳功能?如果没有,我可以使用 Scikit 中的 RFE 提供和支持的 LogisticRegression() 等算法来完成为我的数据集寻找最佳特征的任务吗?
我假设您的 Keras 模型是某种神经网络。一般而言,对于 NN,很难看出哪些输入特征相关,哪些不相关。这样做的原因是每个输入特征都有多个与其相关联的系数——每个系数对应于第一个隐藏层的一个节点。添加额外的隐藏层使得确定输入特征对最终预测的影响有多大变得更加复杂。
另一方面,对于线性模型来说,它非常简单,因为每个特征 x_i 都有对应的 weight/coefficient w_i 并且它的大小直接决定了它有多大的影响在预测中(当然假设特征被缩放)。
RFE 估计器(递归特征消除)假定您的预测模型具有属性 coef_
(线性模型)或 feature_importances_
(树模型),该属性具有输入特征的长度并且它代表它们的相关性(绝对值)。
我的建议:
- 特征选择:(选项 a)运行 任何线性/树模型上的 RFE,以将特征数量减少到某个所需数量
n_features_to_select
. (选项 b)使用强制稀疏性的正则化线性模型,如套索/弹性网。这里的问题是您不能直接设置所选功能的实际数量。 (选项 c)使用 here. 中的任何其他特征选择技术
- 神经网络:仅将 (1) 中的特征用于您的神经网络。
建议:
在基于 sklearn 的算法上执行 RFE 算法以观察特征重要性。最后,您使用观察到的最重要的特征来训练您基于 Keras 的算法。
对于您的问题:逻辑回归不需要标准化
我试图找到主导回归模型输出的最佳特征,以下是我的代码。
seed = 7
np.random.seed(seed)
estimators = []
estimators.append(('mlp', KerasRegressor(build_fn=baseline_model, epochs=3,
batch_size=20)))
pipeline = Pipeline(estimators)
rfe = RFE(estimator= pipeline, n_features_to_select=5)
fit = rfe.fit(X_set, Y_set)
但是当 运行 时出现以下运行时错误。
RuntimeError: The classifier does not expose "coef_" or "feature_importances_" attributes
如何解决这个问题以及 select 我的模型的最佳功能?如果没有,我可以使用 Scikit 中的 RFE 提供和支持的 LogisticRegression() 等算法来完成为我的数据集寻找最佳特征的任务吗?
我假设您的 Keras 模型是某种神经网络。一般而言,对于 NN,很难看出哪些输入特征相关,哪些不相关。这样做的原因是每个输入特征都有多个与其相关联的系数——每个系数对应于第一个隐藏层的一个节点。添加额外的隐藏层使得确定输入特征对最终预测的影响有多大变得更加复杂。
另一方面,对于线性模型来说,它非常简单,因为每个特征 x_i 都有对应的 weight/coefficient w_i 并且它的大小直接决定了它有多大的影响在预测中(当然假设特征被缩放)。
RFE 估计器(递归特征消除)假定您的预测模型具有属性 coef_
(线性模型)或 feature_importances_
(树模型),该属性具有输入特征的长度并且它代表它们的相关性(绝对值)。
我的建议:
- 特征选择:(选项 a)运行 任何线性/树模型上的 RFE,以将特征数量减少到某个所需数量
n_features_to_select
. (选项 b)使用强制稀疏性的正则化线性模型,如套索/弹性网。这里的问题是您不能直接设置所选功能的实际数量。 (选项 c)使用 here. 中的任何其他特征选择技术
- 神经网络:仅将 (1) 中的特征用于您的神经网络。
建议:
在基于 sklearn 的算法上执行 RFE 算法以观察特征重要性。最后,您使用观察到的最重要的特征来训练您基于 Keras 的算法。
对于您的问题:逻辑回归不需要标准化