Matlab使用交叉驗證

2021-08-28 10:08:48 字數 947 閱讀 6631

在做機器學習時,經常要用到交叉驗證來分配資料,故在此記錄一下。所謂交叉驗證,就是將乙個資料集分為k份,然後取其中乙份作為測試集,剩餘k-1份作為訓練集。然後,取另乙份作為測試集,其餘k-1份作為訓練集......如此迴圈,直到每乙份都做過測試集為止。用的比較多的是10折交叉驗證,**如下:

clc

clear all

% 匯入資料

data = load('f:\work_matlab\matlab\wdbc.txt');

[data_r, data_c] = size(data);

%將資料樣本隨機分割為10部分

indices = crossvalind('kfold', data_r, 10);

for i = 1 : 10

% 獲取第i份測試資料的索引邏輯值

test = (indices == i);

% 取反,獲取第i份訓練資料的索引邏輯值

train = ~test;

%1份測試,9份訓練

test_data = data(test, 1 : data_c - 1);

test_label = data(test, data_c);

train_data = data(train, 1 : data_c - 1);

train_label = data(train, data_c);

% 使用資料的**

end

做交叉驗證的函式就是crossvalind,第二個引數是用於做交叉驗證的資料個數,第三個引數表示要將這些資料分成幾份。另外,有興趣的同學可以開啟test變數看下,你會發現是邏輯值。

注意,此處使用的資料是用於分類的資料,類別標籤放在了最後每個樣本的最後一位。**中將特徵值與標籤分離開來是為了可以對特徵值做歸一化處理,而避免將類別標籤也做歸一化。各位可以根據需要使用。資料分配好後,下面就可以添上自己的**了。

在MATLAB中使用交叉驗證函式的方法

這週忙著趕畢業 發個前段時間用到的在matlab中使用交叉驗證函式的方法吧。交叉驗證是一種隨機迴圈驗證方法,它可以將資料樣本隨機分割成幾個子集。交叉驗證主要用於評估統計分析或機器學習演算法的泛化能力等。在評估機器學習演算法的泛化能力時,我們可以選擇隨機分割後的一部分資料作為訓練樣本,另一部分作為測試...

scikit learning 交叉驗證

import numpy as np from sklearn import datasets from sklearn.cross validation import train test split from sklearn.neighbors import kneighborsclassifi...

交叉驗證(cross validation)

交叉驗證是資料分析時模型選擇的方法之一,將資料集分為三份,分別為訓練集 training set 驗證集 valication set 和測試集 test set 分別功能為訓練模型,選擇模型和對學習方法的評估。其演算法的思想為重複的使用資料,使得模型的精度越來越高。交叉驗證的方法有以下三種 1.簡...