问题标签 [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.
machine-learning - 分层K折后怎么办?
我使用了StratifiedKFold来交叉验证我的训练数据集。该模型达到了 75% 的准确率,我认为这是可以接受的。
我是否应该继续并将我的模型实施到测试集上:
还是我应该做其他事情来强制执行分层 k 折以获得新的测试集?
python - 用于机器学习的python中的for循环问题
大家好,我正在尝试对此保险数据集执行 K 折交叉验证,但我尝试使用 for 循环来迭代整数数组。输出给我以下错误:
有人可以解释一下这个错误是什么以及如何解决它。下面是我的 K 折交叉验证代码。
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)。以下是数据示例:
谢谢你的帮助。
matlab - 如何在 Matlab 中将 k 折交叉验证与“模式网络”神经网络一起使用?
patternnet
我正在尝试对神经网络使用 k 折交叉验证。
inputs1
是一个特征向量,targets1
是来自“iris_dataset”的标签向量。和xtrain
、xtest
、ytrain
和分别是使用函数ytest
拆分后的训练和测试特征和标签。cvpartition
步骤如下:
1.首先,创建模式识别网络(patternnet
)。
2.使用 将数据划分为 k-foldscvpartition
后,创建了两个训练和测试特征和标签 ( k=10
)。
3.然后,configure命令用于配置网络对象,同时初始化网络的权重和偏置;
或者
4.初始化参数和超参数后,使用训练数据(通过train()
函数)训练网络。
或者
5.最后,使用训练好的网络(通过net()
函数)估计目标。
或者
由于训练和测试特征使用 分开cvpartition
,因此网络应该使用训练特征及其标签进行训练,然后应该通过测试特征(新数据)进行测试。
虽然该train()
函数用于训练网络,但它会将自己的输入(步骤 (2) 中的训练数据和标签)拆分为训练、验证和测试数据,而步骤 (2) 中的原始测试数据仍未使用。
因此,我需要一个函数,它使用第 2 步(训练和验证)中的训练特征和标签进行学习,还需要另一个函数来对新数据进行分类(第 2 步中的测试特征)。
经过搜索,我写了两个脚本,我认为第一个不正确,但我不确定第二个是否也不正确?如何解决?
第一个脚本:
第二个脚本:
scikit-learn - 由于没有真实样本,召回率定义不明确并设置为 0.0
我正在尝试使用 Kfold 验证我的数据。
X_undersample 是一个数据框 (984,29)
y_undersample 是一个数据框 (984,1)
我收到以下警告:
为什么我会收到这个警告,我的数据完全平衡(50/50)这个警告和低召回分数是意料之中的。你能告诉我我做错了什么吗?
我尝试打印 x_test 和 y_test 的值形状和值。
是因为第一列代表索引吗?
谢谢。
python - 如何使用自定义类分层 sklearn kFold?
我正在阅读这篇关于如何为非常不平衡的数据集进行正确 KFold 的文章。在最后一个示例中,它展示了如何将数据集拆分为 2 折,50/50 训练/测试。一切都非常酷和有趣。然而,我想知道如何进行拆分,我还可以控制每个折叠中的类分布,例如 50/50 class0/class1(又名欠采样/过采样)。因此,鉴于以下数据,假设我想要 4 折,我正在寻找以下结果:
有没有办法用任何方法来实现这一点sklearn.model_selection
?我到处寻找这个没有运气。这可能是因为这种方法不应该与 KFold 一起使用吗?
python - 不确定 get_n_splits 的目的以及为什么它是必要的
我正在关注Kaggle 上的内核并遇到了这段代码。
我了解 KFold 的用途和用途以及“cross_val_score”中使用的事实。我不明白为什么要使用“get_n_split”?据我所知,它返回用于交叉验证的迭代次数,即在这种情况下返回值 5。当然对于这一行:
简历 = 5?这对我来说没有任何意义。如果 get_n_splits 返回一个整数,为什么还要使用它?我认为KFold 返回一个类,而get_n_splits
返回一个整数。
任何人都可以澄清我的理解吗?
python - 朴素贝叶斯 NLTK 交叉验证
我无法理解 KFold 交叉验证在新模型选择版本中的工作原理。我正在使用朴素贝叶斯分类器,我想使用交叉验证对其进行测试。我的测试和训练数据是这样拆分的:
并且它们表示为({'one': True, 'last': True...},pos)
。
我知道在旧的交叉验证中我会有类似的东西:
对于新的交叉验证,我看到它不再占用训练集的长度,并且它使用了一个我不太熟悉的拆分函数,因为我手动拆分了我的测试和训练集,如上所示。
python - 使用 KFolds 拆分数据框:我希望拆分行,但拆分列
我有一个 466 x 1025 的数据框。1024 个变量和目标组成列。我正在对数据集使用随机森林回归,并尝试使用折叠来获得更一致的预测。我的目标是正确拆分,但是当应用于数据时,列被拆分而不是行。我得到 466 x 372 的训练数据和 466 x 94 的测试数据。我需要 372 x 1024 的训练数据和 94 x 1024 的测试数据。我该如何解决这个问题?注意:当我使用 train_test_split() 时它可以正常工作
编码:
r - R:正确理解 K-Fold 验证?
下午好。
在对k-Fold Cross-Validation进行研究后,我想要进行一次完整性检查。我将提供我的理解,然后提供一个示例来说明如何在R中执行先入为主的理解。
如果我的想法不正确,或者我的代码没有反映我的思维过程/正确的程序,我将非常感谢任何帮助。以连续响应变量的基本预测建模场景为例:
- 拥有人口数据集 (xDF)
- 我想将数据集拆分为 k=10 个单独的部分,在其中 9 个(绑定)上训练模型,然后在剩余的验证集上进行验证
- 然后,我想遍历每个验证集,以观察模型在未经训练的数据段上的表现
- 在第k+1...k+9个验证集上显示相似结果的第 k倍验证集上的模型性能测量(此示例中为RMSE )表明该模型具有良好的泛化性
代码:
我这样做对吗?
提前谢谢了。