10-fold cross-validation

10-fold cross-validation,用來測試精度。是常用的精度測試方法。將數據集分成十分,輪流將其中9份做訓練1份做測試,10次的結果的均值作爲對算法精度的估計,一般還需要進行多次10倍交叉驗證求均值,例如10次10倍交叉驗證,更精確一點。
參考文獻:
[1] http://ks.cn.yahoo.com/question/1590000871462.html
[2] http://zhidao.baidu.com/question/37942877.html

dbhunter

2008-9-28 11:13:23

/**
*this.samples,this.trainSamples,this.testSamples,this.vcTrainSampleID,this.vcTestSampleID爲類成員變量
*this.samples 樣本集
*this.trainSamples 訓練樣本集
*this.testSamples 測試樣本集
*this.vcTrainSampleID 訓練樣本集標號
*this.vcTestSampleID 測試樣本集標號
*this.line 樣本行數
*n n交叉
*startNum 開始樣本標號
*/

CODE:


public void nCorssDivideSample(int n, int startNum) {
   int testSamplesNum = 0;
   int maxSampleNum = this.samples.length;
   int counter = n - 1;
   for (int i = 0; i < maxSampleNum; i++) {
if (i % n == 0) {
testSamplesNum++;
}
   }
   int counterTrain = 0, counterTest = 0;
   this.trainSamples = new Sample[this.line - testSamplesNum];
   this.testSamples = new Sample[testSamplesNum];
   for (int i = 0; i < maxSampleNum; i++) {
if ((counter % n + 1) == n) {
this.testSamples[counterTest++] = this.samples[startNum];
this.vcTestSampleID.add(startNum);
} else {
this.trainSamples[counterTrain++] = this.samples[startNum];
this.vcTrainSampleID.add(startNum);
}
startNum++;
counter++;
startNum = startNum % maxSampleNum;
   }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章