问题标签 [rfe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2167 浏览

machine-learning - 如何加快对 6,100,000 个特征的递归特征消除?

我正在尝试从 sklearn 中的一组相当大的特征(~6,100,000)中获得特征排名。这是我到目前为止的代码:

模型的每次训练大约需要 10 分钟。对于 6,100,000 个特征,这意味着数十年的计算时间。实际上115.9年。有没有更好的方法来做到这一点?我知道 rfe 需要最后一次消除的结果,但是有什么方法可以通过并行化或以不同的方式获得排名来加快速度?我可以使用数千个节点(感谢我工作的公司!)所以任何类型的并行性都会很棒!

我确实有线性 SVM 超平面的列表系数。订购这些很容易,但是正在为此完成的论文将由斯坦福数据科学教授进行审查,他强烈反对使用非排名算法进行排名......以及非斯坦福大学校友喜欢我。:P

我可以取一个更大的值step,但这会消除对所有特征进行实际排名的能力。相反,我会对 100,000 或 10,000 个功能的组进行排名,这并不是很有帮助。

编辑:nSV 可能很有用,所以我将它包含在下面:

0 投票
1 回答
84 浏览

r - 如何将 RFE 选择的变量插入到 r 中的机器学习模型中?

我想使用递归特征消除方法来选择最重要的特征,然后将它们放入机器学习模型中。我将 RFE 的代码写为

然后代码给了我最重要的特征:[1]“a”“b”“c”“d”“e”最后我把这些特征放在模型中:

我的问题是每次 RFE 为我提供 [1] "a" "b" "c" "d" "e" 的顶级功能时,我必须将它们编辑为 a+b+c+d 并将它们放入模型中但是,如果手动选择了 50 个特征作为顶级特征,则无法对其进行编辑并将其放入模型中,有什么方法可以自动执行此操作。我非常感谢您的意见。

0 投票
1 回答
185 浏览

r - 递归特征消除 - 线性模型 - R

我正在尝试解决Ames Housing Data Challenge,并删除了包含 NA 值大于 5% 的列,并进一步消除了具有 NA 值的其他行。

我正在尝试使用插入符号消除线性模型的特征。我已经设置了以下代码,

导致以下错误,

{ 中的错误:任务 1 失败 -“对比只能应用于具有 2 个或更多级别的因素”

事实是,x 的所有因子的水平都大于 2!

这是数据的str输出,

请帮忙!

0 投票
2 回答
1364 浏览

python - 通过应用 RFE 选择给出最佳调整 R 平方值的特征子集

我有两个目标。我想要:

  1. 循环遍历特征值 1-10,然后
  2. 比较调整后的 R 平方值。

我知道如何仅针对以下代码中显示的 1 个固定功能执行此操作。我试图循环,selector = RFE(regr, n_features_to_select, step=1)但我认为我错过了这个难题的关键部分。谢谢你!

0 投票
1 回答
546 浏览

r - rfe.default 中的错误 ... x 和 y 中的样本数应该相同

这很简单,下面的 rfe 函数抛出此错误:“rfe.default 中的错误(预测器,as.vector(结果),大小 = c(5),rfeControl = rfeControl(函数 =“lmFuncs”,:应该有x 和 y 的样本数相同"

df 第一列是具有 2 个级别的因子。其余的 df 列是数字的。没有 NA 值。

我一点也不知道这个错误是关于什么的。我已经尝试了其他一些解决方案无济于事。

我尝试了以下,它给出了同样的错误。

尝试了以下。引发此错误:“错误:必须在 中使用向量[,而不是类矩阵的对象。”

还尝试了以下方法,抛出此错误:“错误:$ 运算符对原子向量无效”。说我疯了,但我在代码中的任何地方都没有看到 $ 运算符。

我已经尝试过 as.factor()、as.data.frame()、as.matrix()、df[、1]、df[、-1]、df[、2:ncol(df)] 的所有组合, 和可以想到的 df[, 1:1 ]。

所以我尝试了这个:

这似乎运行了一段时间,但是当然,R 不会让我轻易地运行 rfe(),所以在日志的末尾它又抛出了另一个错误并且 rfe_linear 对象仍然没有找到.

0 投票
1 回答
138 浏览

python - 如何解释 sklearn.feature_selection 中多类的 _coeffs 输出的特征的重要性?

我有一个包含 150 个样本和近 10000 个特征的数据集。我将样本分为 6 个集群。我使用sklearn.feature_selection.RFECV方法来减少特征数量。该方法使用10 倍 CV估计重要特征的数量 3000 个特征,准确率约为 95% 。但是,我可以使用大约 250 个特征(我使用grid_scores_绘制)获得约 92% 的准确度。因此,我想获得这 250 个功能。

我已经检查了这个问题Getting features in RFECV scikit-learn并发现通过以下方式计算所选特征的重要性:

np.absolute(rfecv.estimator_.coef_)

它返回二进制分类的重要特征数量的数组长度。正如我之前指出的,我有 6 个集群,并且sklearn.feature_selection.RFECV 进行分类1 vs 1。因此我得到(15, 3000)ndarray。我不知道该怎么做。我正在考虑为每个功能采用点积:

我得到(1,3000)的数组。我可以对这些进行排序并得到我想要的结果。但我不确定它是否正确和有意义。我非常感谢任何其他解决方案。

0 投票
1 回答
512 浏览

python - 多输出回归器和 sklearn 的 RFE 模块

我想知道是否可以使用带有sklearn包的多变量估计器进行 RFE。我检查了文档,找不到任何支持或反对它的东西。这是最小的代码:

但我在测试时收到以下错误

ValueError: 错误的输入形状 (5000, 2)

这并没有提供太多信息。


编辑:

显然,使用 RFE 功能, y 经历

这要求 y 是一个向量。有解决方法吗?

0 投票
0 回答
363 浏览

python - Sklearn Predict_Proba: ValueError: 操作数不能与形状一起广播 (44,57) (4,)

我正在尝试通过递归特征消除来计算机器学习模型的 log_loss,并且当我尝试运行 sklearns predict_proba 函数时发生值错误

我目前试图通过 RFE 删除修改我的数据集的代码。当我这样做时,不会发生形状改变,同样的错误仍然会发生。测试数据的形状从 (44,2048) 开始,测试标签从 (44,) 开始,改装后变为:测试数据形状变为 (44,57) 测试标签不受影响

我真的不知道接下来要尝试什么,任何建议都会有所帮助。我不明白 (4,) 是从哪里来的,因为它试图将我的数据塑造成它

错误:

0 投票
1 回答
1031 浏览

python - sklearn 中的 RFECV,来自 grid_scores_ 的分数

我正在使用sklearn.feature_selection.RFECV

我得到:

[ 0.9316829 0.93472609 0.79440118 -2.37744438 -1.20559428 -1.35899883 -0.90087801 -1.02047363 -0.54169276 -0.08116821 -0.00685128 0.1561999 -0.26433411 -0.27843449 -0.32703359 -0.32782641 -0.30881354 0.11878835 0.08175137 0.04300757
0.0378917 0.04534877]

RFECV在每个步骤中删除最不重要的特征,因此例如 10 个特征的得分应该是任何 10 个特征的最佳得分,而当我使用选定的 10 个特征(使用另一种方式)运行下面的代码时:

然后我得到:

交叉验证分数:[0.96706997 0.9653103 0.96386666 0.96017565 0.96603127]

所有的分数都在0.96左右,而 10 个特征的分数RFECV-0.08

这里到底发生了什么?

EDIT1:所选功能的数量2如下ranking_

[ 4 7 1 6 3 2 8 11 5 10 21 9 12 14 13 15 16 19 18 17 1 20]

0 投票
2 回答
673 浏览

python - scikit-learn 中的目标转换和特征选择

RFECV在 scikit-learn 中用于特征选择。我想将简单线性模型 ( X,y) 的结果与对数转换模型 (使用X, log(y))的结果进行比较

简单模型RFECVcross_val_score提供相同的结果(我们需要将所有折叠的交叉验证的平均分数与RFECV所有特征的分数进行比较:0.66= 0.66,没问题,结果是可靠的)

日志模型问题:似乎RFECV没有提供转换的方法y。这种情况下的分数是0.55vs 0.53。不过,这是意料之中的,因为我必须手动应用np.log以适应数据:log_seletor = log_selector.fit(X,np.log(y)). 这个 r2 分数是用于y = log(y),没有inverse_func,而我们需要的是一种方法来拟合模型log(y_train)并使用 计算分数exp(y_test)。或者,如果我尝试使用TransformedTargetRegressor,我会得到代码中显示的错误:分类器不公开“coef_”或“feature_importances_”属性

如何解决问题并确保特征选择过程可靠?

输出: