问题标签 [cross-validation]
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.
r - 对拟合的生存对象进行交叉验证?
我可以看到 cv.glm 如何与 glm 对象一起工作,但是拟合的生存模型呢?
我有一堆模型(Weibull、Gompertz、lognormal 等)。我想使用交叉验证来评估预测误差。哪个包/函数可以在 R 中做到这一点?
statistics - 特征选择和交叉验证
我想训练一个回归模型,为此我使用随机森林模型。但是,我还需要进行特征选择,因为我的数据集中有很多特征,我担心如果我使用了所有特征,那么我会过度拟合。为了评估我的模型的性能,我还进行了 5 折交叉验证,我对以下两种方法的问题是正确的,为什么?
1-我是否应该将数据分成两半,在前半部分进行特征选择,并使用这些选定的特征对剩余的一半进行 5 折交叉验证 (CV)(在这种情况下,5 个 CV 将使用完全相同的选定特征)。
2-执行以下程序:
1- 将数据分成 4/5 用于训练和 1/5 用于测试 2- 将此训练数据(全部数据的 4/5)分成两半:a-) 在前半部分训练模型并使用训练好的模型进行特征选择。b-) 使用第一部分中选择的特征在训练数据集的后半部分训练模型(这将是我们最终训练的模型)。3- 在剩余的 1/5 数据上测试模型的性能(在训练阶段从未使用过) 4- 重复上一步 5 次,每次我们随机(不替换)将数据分成 4 /5 用于训练,1/5 用于测试
我唯一担心的是,在第二个过程中,我们将有 5 个模型,最终模型的特征将是这五个模型的顶级特征的并集,所以我不确定 5CV 的性能是否可以反映最终模型的最终性能,特别是因为最终模型与 5fold 中的每个模型具有不同的特征(因为它是 5 CV 中每个模型的选定特征的并集)
matlab - 交叉分类分类器在 matlab 中显示输出
我有一个简单的问题,我对 matlab 不是很熟悉。所以代码会很有帮助;)。我确实有一个 KNN 分类器,我想通过交叉验证对其进行评估。我的代码如下所示:
我的输入数据是标签 10000*1 和 training_data 128*10000。现在,当我运行程序时,它也会产生 1000*1 Pre_Labels 或其他输出。我想这是因为我只显示了 1 折。我想要的只是以有序结构显示所有折叠的所有输出。我必须如何更改我的代码才能实现这一目标?
非常感谢!!这是一个很大的帮助
r - 如何在 R 中执行随机森林/交叉验证
我无法找到对我试图生成的回归随机森林模型执行交叉验证的方法。
所以我有一个数据集,其中包含 1664 个解释变量(不同的化学性质),一个响应变量(保留时间)。我正在尝试生成一个回归随机森林模型,以便能够在给定保留时间的情况下预测某物的化学性质。
这是我拥有的表格的一个示例。我想基本上根据 1_MW 等(最多 1664 个变量)绘制 RT,所以我可以找到这些变量中哪些是重要的,哪些不是。
我愿意:-
它告诉我哪些变量很重要,哪些不重要,这很好。但是,我希望能够对我的数据集进行分区,以便对其执行交叉验证。我找到了一个在线教程,解释了如何做到这一点,但针对的是分类模型而不是回归。
我明白你这样做:-
定义要进行多少次交叉折叠,以及每个折叠的大小,并设置子集的起始值和结束值。但是,我不知道以后该怎么办。我被告知要循环,但老实说我不知道该怎么做。我也不知道如何将验证集和测试集绘制到同一张图上以描述准确度/错误的水平。
如果您能帮我解决这个问题,我将不胜感激,谢谢!
matlab - 如何在matlab中将数据拆分为k-folds而不是随机的?
我有一个数据集,为简单起见,假设它有 1000 个样本(每个都是一个向量)。
我想分割我的数据进行交叉验证,训练和测试,而不是随机1,所以例如,如果我想要 4 倍交叉验证,我应该得到:
fold1 : 火车 = 1:250; 测试= 251:1000
fold2:火车= 251:500,测试= [1:250;501:1000]
折叠 3:火车 = 501:750,测试 = [1:500; 751:1000]
fold4:训练 = 751:1000,测试 = 1:750
我知道CVPARTITION,但是 AFAIK - 它随机拆分数据 - 这不是我需要的。
我想我可以为它编写代码,但我想可能有一个我可以使用的函数。
(1) 数据已经洗牌,我需要能够轻松地重现实验。
python-2.7 - scikit-learn PCA 没有“分数”方法
我正在尝试根据该文章确定噪音的类型:
我在 win8 64bit 上使用 scikit-learn-0.14.1.win32-py2.7 我知道它指的是 0.15 版,但是在 0.14 版文档中它提到 score 方法可用于 PCA 所以我想它应该通常工作:
sklearn.decomposition.ProbabilisticPCA
问题是,无论我将哪个 PCA 用于 *cross_val_score*,我总是会收到一条类型错误消息,指出估算器 PCA 没有 score 方法:
*TypeError:如果没有指定评分,则传递的估计器应该有一个'score'方法。估计器 PCA(copy=True, n_components=None, whiten=False) 没有。*
任何想法为什么会发生这种情况?
提前谢谢了
克里斯托斯
X 有 40 个特征的 1000 个样本
这是代码的一部分:
r - 关于大数据分类树模型中K-fold交叉验证的问题
我想为带有包“rpart”的分类树模型执行 5 倍 CV,在此之前我使用代码将我的数据划分为 5 个子数据集,并且出现 1 个错误:在数据划分步骤期间出现错误,例如:
[]中的错误*tmp*
:下标超出范围
我已经google了错误,但仍然无法解决。
我的数据有点大,超过 370,000 行和 13 个预测变量。我的响应变量中有 51 个级别。
r - R:对具有因子的数据集进行交叉验证
通常,我想在包含一些因子变量的数据集上运行交叉验证,并且在运行一段时间后,交叉验证例程失败并出现错误:factor x has new levels Y
.
例如,使用包启动:
更新:这是一个玩具示例。同样的问题也出现在较大的数据集上,其中出现了几次级别,但训练分区C
中都不存在。
包中的函数createDataPartition
函数对结果变量进行分层抽样并正确警告:caret
此外,对于“createDataPartition”,非常小的班级规模 (<= 3) 班级可能不会同时出现在训练和测试数据中。
有两种解决方案浮现在脑海中:
- 首先,通过首先选择一个随机样本来创建数据的子集
factor level
,从最稀有的类别(按频率)开始,然后贪婪地满足下一个稀有类别,依此类推。然后createDataPartition
在数据集的其余部分上使用并合并结果以创建一个新的火车数据集,其中包含所有levels
. - 使用
createDataPartitions
和做拒绝抽样。
到目前为止,由于数据大小的原因,选项2对我有用,但我不禁认为必须有比手动推出的解决方案更好的解决方案。
理想情况下,我想要一个仅适用于创建分区的解决方案,如果无法创建此类分区,则会提前失败。
软件包不提供此功能是否有根本的理论原因?他们是否提供它而我只是因为盲点而无法发现它们?有没有更好的方法来进行这种分层抽样?
如果我应该在stats.stackoverflow.com上提出这个问题,请发表评论。
更新:
这就是我手工推出的解决方案 (2) 的样子:
r - cv中的成本函数。当模型的截止值不是 0.5 时,拟合逻辑模型的 glm
我有一个符合以下 R 函数的逻辑模型:
为了使用拟合模型获得良好的数据分类(或混淆矩阵),一个合理的截止值是 0.2,而不是最常用的 0.5。
我想使用cv.glm
拟合模型的功能:
由于拟合模型中的响应是二元变量,因此适当的成本函数是(从 ?cv.glm 的“示例”部分获得):
由于我的截止值为 0.2,我可以应用这个标准成本函数还是应该定义一个不同的成本函数以及如何定义?