当前位置:  开发笔记 > 小程序 > 正文

MATLAB:10倍交叉验证,不使用现有功能

如何解决《MATLAB:10倍交叉验证,不使用现有功能》经验,为你挑选了1个好方法。



1> Atilla Ozgur..:

以下是我对此交叉验证的看法.我使用魔法创建虚拟数据(10)我也随机创建标签.想法如下,我们得到我们的数据和标签,并将它们与随机列结合起来.考虑遵循虚拟代码.

>> data = magic(4)

data =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> dataRowNumber = size(data,1)

dataRowNumber =

     4

>> randomColumn = rand(dataRowNumber,1)

randomColumn =

    0.8147
    0.9058
    0.1270
    0.9134


>> X = [ randomColumn data]

X =

    0.8147   16.0000    2.0000    3.0000   13.0000
    0.9058    5.0000   11.0000   10.0000    8.0000
    0.1270    9.0000    7.0000    6.0000   12.0000
    0.9134    4.0000   14.0000   15.0000    1.0000

如果我们根据第1列对X进行排序,我们会随机排序数据.这将给我们交叉验证随机性.然后接下来就是根据交叉验证百分比划分X. 一个案例很容易实现这一点.让我们考虑%75%是火车案例,%25%是测试案例.我们这里的大小是4,然后是3/4 =%75和1/4是%25.

testDataset = X(1,:)
trainDataset = X(2:4,:)

但是对于N交叉褶皱来说,实现这一点要困难得多.因为我们需要做N次.对于循环是必要的.适用于5个交叉折叠.我得到了,在第一个f

    第1折:1 2用于测试,3:10用于火车

    第二次折叠:3 4用于测试,1 2 5:10用于火车

    第3折:5 6为测试,1:4 7:10为火车

    第4折:7 8为测试,1:6 9:10为火车

    第5折:9 10为测试,1:8为火车

以下代码是此过程的示例:

data = magic(10);
dataRowNumber = size(data,1);
labels= rand(dataRowNumber,1) > 0.5;
randomColumn = rand(dataRowNumber,1);

X = [ randomColumn data labels];


SortedData = sort(X,1);

crossValidationFolds = 5;
numberOfRowsPerFold = dataRowNumber / crossValidationFolds;

crossValidationTrainData = [];
crossValidationTestData = [];
for startOfRow = 1:numberOfRowsPerFold:dataRowNumber
    testRows = startOfRow:startOfRow+numberOfRowsPerFold-1;
    if (startOfRow == 1)
        trainRows = [max(testRows)+1:dataRowNumber];
        else
        trainRows = [1:startOfRow-1 max(testRows)+1:dataRowNumber];
    end
    crossValidationTrainData = [crossValidationTrainData ; SortedData(trainRows ,:)];
    crossValidationTestData = [crossValidationTestData ;SortedData(testRows ,:)];

end

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有