问题标签 [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 投票
0 回答
39 浏览

machine-learning - 分层K折后怎么办?

我使用了StratifiedKFold来交叉验证我的训练数据集。该模型达到了 75% 的准确率,我认为这是可以接受的。

我是否应该继续并将我的模型实施到测试集上:

还是我应该做其他事情来强制执行分层 k 折以获得新的测试集?

0 投票
1 回答
271 浏览

python - 用于机器学习的python中的for循环问题

大家好,我正在尝试对此保险数据集执行 K 折交叉验证,但我尝试使用 for 循环来迭代整数数组。输出给我以下错误:

有人可以解释一下这个错误是什么以及如何解决它。下面是我的 K 折交叉验证代码。

0 投票
0 回答
409 浏览

r - 使用带有 C5.0 决策树的 R 插入符包(训练)进行 K 折交叉验证时出错

现在解决了。问题是 data=OneT.train,这是错误的。此代码是从原始代码复制过来的。它需要是插入号 train() 函数中的 data=OneT 。当前的 OneT.train 在属性字段中存在缺失值,而不是目标,因为重新加载和拆分数据,省略了填充缺失值 - 从未使用过。


我正在尝试使用 caret 包对 C5.0 决策树进行重复的 k 折交叉验证。

以下代码生成一个有效的 C5.0 决策树(混淆矩阵的准确率为 68%):

caret 包代码给出了这些错误(没有缺失值):

数据从 .csv 文件加载,OneGM 为 TRUE 或 FALSE(.csv 中的文本列) - 并且没有任何缺失值。

我想使用上面的单行插入符号包方法(我已经在多个地方看到过这种方法),而且我不是在寻找手动进行交叉验证的解决方案。

没有缺失值 (OneT[is.na(OneT)] <- 0)。以下是数据示例:

谢谢你的帮助。

0 投票
0 回答
413 浏览

matlab - 如何在 Matlab 中将 k 折交叉验证与“模式网络”神经网络一起使用?

patternnet我正在尝试对神经网络使用 k 折交叉验证。

inputs1是一个特征向量,targets1是来自“iris_dataset”的标签向量。和xtrainxtestytrain和分别是使用函数ytest拆分后的训练和测试特征和标签。cvpartition

步骤如下:

1.首先,创建模式识别网络(patternnet)。

2.使用 将数据划分为 k-foldscvpartition后,创建了两个训练和测试特征和标签 ( k=10)。

3.然后,configure命令用于配置网络对象,同时初始化网络的权重和偏置;

或者

4.初始化参数和超参数后,使用训练数据(通过train()函数)训练网络。

或者

5.最后,使用训练好的网络(通过net()函数)估计目标。

或者

由于训练和测试特征使用 分开cvpartition,因此网络应该使用训练特征及其标签进行训练,然后应该通过测试特征(新数据)进行测试。

虽然该train()函数用于训练网络,但它会将自己的输入(步骤 (2) 中的训练数据和标签)拆分为训练、验证和测试数据,而步骤 (2) 中的原始测试数据仍未使用。

因此,我需要一个函数,它使用第 2 步(训练和验证)中的训练特征和标签进行学习,还需要另一个函数来对新数据进行分类(第 2 步中的测试特征)。

经过搜索,我写了两个脚本,我认为第一个不正确,但我不确定第二个是否也不正确?如何解决?

第一个脚本:

第二个脚本:

0 投票
1 回答
1156 浏览

scikit-learn - 由于没有真实样本,召回率定义不明确并设置为 0.0

我正在尝试使用 Kfold 验证我的数据。

X_undersample 是一个数据框 (984,29)

y_undersample 是一个数据框 (984,1)

我收到以下警告:

为什么我会收到这个警告,我的数据完全平衡(50/50)这个警告和低召回分数是意料之中的。你能告诉我我做错了什么吗?

我尝试打印 x_test 和 y_test 的值形状和值。

是因为第一列代表索引吗?

谢谢。

0 投票
1 回答
344 浏览

python - 如何使用自定义类分层 sklearn kFold?

我正在阅读这篇关于如何为非常不平衡的数据集进行正确 KFold 的文章。在最后一个示例中,它展示了如何将数据集拆分为 2 折,50/50 训练/测试。一切都非常酷和有趣。然而,我想知道如何进行拆分,我还可以控制每个折叠中的类分布,例如 50/50 class0/class1(又名欠采样/过采样)。因此,鉴于以下数据,假设我想要 4 折,我正在寻找以下结果:

有没有办法用任何方法来实现这一点sklearn.model_selection?我到处寻找这个没有运气。这可能是因为这种方法不应该与 KFold 一起使用吗?

0 投票
1 回答
1041 浏览

python - 不确定 get_n_splits 的目的以及为什么它是必要的

我正在关注Kaggle 上的内核并遇到了这段代码。

我了解 KFold 的用途和用途以及“cross_val_score”中使用的事实。我不明白为什么要使用“get_n_split”?据我所知,它返回用于交叉验证的迭代次数,即在这种情况下返回值 5。当然对于这一行:

简历 = 5?这对我来说没有任何意义。如果 get_n_splits 返回一个整数,为什么还要使用它?我认为KFold 返回一个类,而get_n_splits返回一个整数。

任何人都可以澄清我的理解吗?

0 投票
0 回答
186 浏览

python - 朴素贝叶斯 NLTK 交叉验证

我无法理解 KFold 交叉验证在新模型选择版本中的工作原理。我正在使用朴素贝叶斯分类器,我想使用交叉验证对其进行测试。我的测试和训练数据是这样拆分的:

并且它们表示为({'one': True, 'last': True...},pos)

我知道在旧的交叉验证中我会有类似的东西:

对于新的交叉验证,我看到它不再占用训练集的长度,并且它使用了一个我不太熟悉的拆分函数,因为我手动拆分了我的测试和训练集,如上所示。

0 投票
2 回答
1115 浏览

python - 使用 KFolds 拆分数据框:我希望拆分行,但拆分列

我有一个 466 x 1025 的数据框。1024 个变量和目标组成列。我正在对数据集使用随机森林回归,并尝试使用折叠来获得更一致的预测。我的目标是正确拆分,但是当应用于数据时,列被拆分而不是行。我得到 466 x 372 的训练数据和 466 x 94 的测试数据。我需要 372 x 1024 的训练数据和 94 x 1024 的测试数据。我该如何解决这个问题?注意:当我使用 train_test_split() 时它可以正常工作

编码:

0 投票
0 回答
50 浏览

r - R:正确理解 K-Fold 验证?

下午好。

在对k-Fold Cross-Validation进行研究后,我想要进行一次完整性检查。我将提供我的理解,然后提供一个示例来说明如何在R中执行先入为主的理解。

如果我的想法不正确,或者我的代码没有反映我的思维过程/正确的程序,我将非常感谢任何帮助。以连续响应变量的基本预测建模场景为例:

  • 拥有人口数据集 (xDF)
  • 我想将数据集拆分为 k=10 个单独的部分,在其中 9 个(绑定)上训练模型,然后在剩余的验证集上进行验证
  • 然后,我想遍历每个验证集,以观察模型在未经训练的数据段上的表现
  • 在第k+1...k+9个验证集上显示相似结果的第 k倍验证集上的模型性能测量(此示例中为RMSE )表明该模型具有良好的泛化性

代码:

我这样做对吗?

提前谢谢了。