首页 > 解决方案 > 可以使用 Julia 0.6 使用具有相同类别百分比的 kfolds 拆分数据集吗?

问题描述

在 Julia 0.6 中,是否可以使用具有相同类百分比的 kfold 拆分数据集?我的意思是,如果我有蓝色、红色和绿色三个类,我希望每个 k 折对每个类都有相同的观察数(或非常接近)。比如蓝色为 20%,绿色为 20%,红色为 20%。

我在用着

folds = kfolds((Xtrain,Ttrain),k=7)
(xtreino1,ytreino1), (xvali1,yvali1) = folds[1]

但它不会为每个类返回相同数量的观察值。

标签: splitdatasetjuliacross-validation

解决方案


MLBase包具有StratifiedKfold交叉验证策略:

julia> collect(StratifiedKfold([:a, :a, :a, :b, :b, :c, :c, :a, :b, :c], 3))
3-element Array{Any,1}:
 [1,2,4,6,8,9,10]
 [3,4,5,7,8,10]
 [1,2,3,5,6,7,9]

返回的数组应该用作原始数据的索引。


推荐阅读