问题标签 [k-fold]

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 回答
116 浏览

python - 选择用于 H2O 交叉验证的 nfolds 是否会改变使用的数据百分比?

H2O 手册描述了如何拆分数据以进行 k 折交叉验证。给出的示例用于 5 折交叉验证。

见这里:http: //docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/nfolds.html其中指出:

“前 5 个模型(交叉验证模型)建立在 80% 的训练数据之上,而 5 个模型中的每一个都保留了不同的 20%。”

如果选择了不同的折叠值,这些百分比是否会有所不同,例如,假设选择 10 作为折叠数,以下是否正确?

“前 10 个模型(交叉验证模型)建立在 90% 的训练数据之上,而这 10 个模型中的每一个都保留了不同的 10%。”

0 投票
1 回答
515 浏览

machine-learning - 使用 MLP 算法进行 k 折交叉验证

我有一个数据集,分为训练和测试部分。我的任务是训练它并使用 k 折交叉验证评估我的模型。我对任务声明有点困惑。据我所知,k-dold 交叉验证的目的是通过使用所有数据来训练和测试模型,在有限的数据样本上评估模型。请告诉我我的算法是否正确:

  1. 连接我的数据集的测试和训练部分。
  2. 将整个数据集拆分为 k 个部分。
  3. 使用 MLP 在我的数据集除一个以外的所有部分训练我的模型,然后在左侧进行测试。保留评估分数。
  4. 计算平均评价分数。
0 投票
1 回答
182 浏览

r - 在 R 中为 k 折叠(特定于 ID)创建向量

我一直在尝试各种事情,但最终都以错误消息和奇怪的东西告终。我目前正在使用来自 SurvSL 的功能,但我想根据我的特定需求对其进行微调。这是完整的功能:

现在我需要改变的是这部分:

folds 成为一个向量,它是 1 到 5 之间数字的 1459 倍,因此我可以相应地“折叠”我的 1459 个观察值(在 5 组 k=5 中)。但是,我的数据中有一个“ID”变量。大多数时候它是一个唯一的数字。但有时会有双打/三打。相同的 ID 号获得相同的折叠号非常重要(并且我在两个不同的折叠中没有相同的 ID)。我有 1459 个观察结果和 1240 个不同的“ID”。如果我想要 5 折 (k),每折应该有 (1240/5=) 248 个不同的 ID 号。

有谁知道一个很酷/简单的功能来管理这个?在 R 中玩了很多鬼之后,我开始担心我将不得不为 1459 obs 手动创建该向量...

提前致谢!

0 投票
1 回答
286 浏览

python - 使用 RepeatedStratifiedKFold 5*10 的 cross_val_predict 概率

我的目标是从 5*10 StratifiedKfold CV 计算 AUC、特异性、灵敏度和 95 % CI。我还需要阈值为 0.4 的特异性和灵敏度以最大化灵敏度。

到目前为止,我能够为 AUC 实现它。下面的代码:

输出:(0.7964761904761904,0.7675441789148183,0.8254082020375626)

到目前为止我真的很满意,但是我怎样才能实现这个概率,所以我可以计算 FPR、TPR 和阈值?对于一个简单的 5 倍,我会这样做:

如果我用 5*10 CV 以这种方式尝试:

它抛出一个错误:

你能帮我解决这个问题吗?

0 投票
1 回答
946 浏览

python - 对整个数据集进行 K 折交叉验证

我想知道我当前的程序是否正确,或者我可能有数据泄漏。导入数据集后,我以 80/20 的比例进行拆分。

然后在定义 CatBoostClassifier 之后,我使用我的训练集执行 GridSearch 并进行交叉验证。

现在我想评估我的模型。我现在可以使用整个数据集来执行 k 折交叉验证,以评估模型吗?(就像下面的代码一样)

还是我也应该只在训练集上执行 k 折交叉验证?

0 投票
1 回答
1100 浏览

scikit-learn - Sklearn 投票集成与使用不同特征的模型并使用 k 折交叉验证进行测试

我有一个包含 4 组不同特征的数据框。

我需要用这四个不同的特征组创建 4 个不同的模型,并将它们与集成投票分类器结合起来。此外,我需要使用 k 折交叉验证来测试分类器。

但是,我发现很难将不同的特征集、投票分类器和 k 折交叉验证与 sklearn 中可用的功能结合起来。以下是我到目前为止的代码。

如您所见,该程序对所有 4 个模型使用相同的功能。我如何改进这个程序以实现我的目标?

0 投票
1 回答
325 浏览

split - 为什么我们应该在传递 StratifiedKFold() 作为 GridSearchCV 的参数时调用 split() 函数?

我想做什么?

我正在尝试StratifiedKFold()GridSearchCV().

那么,什么让我感到困惑?

当我们使用 K 折交叉验证时,我们只需将 CV 的数量传递给内部GridSearchCV(),如下所示。

然后,当我需要使用时StratifiedKFold(),我认为程序应该保持不变。即,仅将拆分数设置为 -StratifiedKFold(n_splits=5)cv

但是这个答案

无论使用什么交叉验证策略,所需要的只是使用函数 split 提供生成器,如建议的那样:

此外,这个问题的答案之一也建议这样做。这意味着,他们建议调用 split 函数:StratifiedKFold(n_splits=5).split(xtrain,ytrain)在使用GridSearchCV(). 但是,我发现打电话split()和不打电话split()给我相同的 f1 分数。

因此,我的问题

  • 我不明白为什么我们需要split()在 Stratified K Fold 期间调用函数,因为我们不需要在 K Fold CV 期间做这类事情。

  • 如果split()调用函数,函数返回训练和测试数据集索引时GridSearchCV()将如何工作?也就是说,我想知道如何使用这些索引?Split()GridSearchCV()

0 投票
2 回答
277 浏览

machine-learning - 如何从 k 折交叉验证中的每个折中学习?

在执行 k 折交叉验证时,对于每个折,我们都有不同的验证集和稍微改变的学习集。假设您从第一折前进到第二折。你是如何从第二次迭代中继承的第一次折叠中学到的?目前,您似乎只计算准确性,而学习的模型被丢弃并且永远不会保留。

我错过了什么?如果保留这样的模型?它是如何保留的,DQN 与 KNN 的方法有什么不同?

0 投票
1 回答
196 浏览

python - KFold 将拆分数量解压缩为相同数量的变量,而不是只有 2 个

我正在使用一个简单的 KFold 拆分:

我收到以下错误:

我注意到,如果数量n_splits与要解压到的数字变量匹配,则它可以正常工作。因此,它将训练和测试的每个拆分解包到一个单独的变量中。

但是,用户指南指出它只产生 2 个变量。

我想将所有拆分解压缩为 2 个变量:1 个用于所有火车索引拆分,1 个用于所有测试索引拆分。

0 投票
0 回答
56 浏览

python - 如何修复“ValueError:发现样本数量不一致的输入变量:[2087, 4174]”

问题就在这里

和 final_data 是 (20876,11) 我已经尝试过重塑,但它不起作用

我不知道为什么要这样做,因为当我只使用 RandomForestClassifier 时,它运行良好

并且我与 GridSerchCV 有相似性问题,在那种情况下也是

他们说有问题 ValueError: Invalid parameter classifier for estimator RandomForestClassifier