cvpartition
交差検証用のデータの分割
説明
cvpartition は、データ セットにおける無作為分割を定義します。この分割は、交差検証を使って統計モデルを検証するためにテスト セットと学習セットを定義するときに使用します。学習インデックスの抽出のために training を使用し、交差検証用にテスト インデックスを抽出するために test を使用します。repartition は、与えられた cvpartition オブジェクトと同じタイプの、新しい無作為分割を定義するために使用します。
cvpartition オブジェクトを作成するときに階層化変数またはグループ化変数を指定した場合、summary を使用してデータ分割に関する追加の情報を表示できます。
作成
構文
説明
は、k 分割交差検証用の無作為分割を定義するオブジェクト c = cvpartition(n,KFold=k,GroupingVariables=groupingVariables)c を返します。関数は、groupingVariables の指定に従って、同じ組み合わせのグループ ラベルをもつ観測値を必ず同じ分割に含めます。 (R2025a 以降)
groupingVariables を指定した場合、cvpartition は groupingVariables の欠損値に対応する観測値の行を破棄します。
は、c = cvpartition(stratvar,KFold=k,Stratify=stratifyOption)k 分割交差検証用の無作為分割を定義するオブジェクト c を返します。Stratify=false を指定した場合、cvpartition は stratvar のクラス情報を無視し、無作為な非層化区分を作成します。そうでない場合、既定で階層化が実装されます。
は、学習セットとテスト (ホールドアウト) セットへの無作為分割を定義するオブジェクト c = cvpartition(stratvar,Holdout=p,Stratify=stratifyOption)c を返します。Stratify=false を指定した場合、cvpartition は無作為な非層化区分を作成します。そうでない場合、既定で階層化が実装されます。
入力引数
標本データに含まれている観測値の数。正の整数スカラーとして指定します。
例: 100
データ型: single | double
パーティションの分割数。正の整数スカラーとして指定します。k は観測値の総数よりも小さくなければなりません。
例: KFold=5
データ型: single | double
R2025a 以降
グループ化変数。次のいずれかとして指定します。
1 つのグループ化変数を含む数値ベクトル、logical ベクトル、categorical ベクトル、文字配列、string 配列、または文字ベクトルの cell 配列。
2 つ以上のグループ化変数を含む数値行列または cell 配列。行列または配列の各列が 1 つのグループ化変数に対応している必要があります。
同じ組み合わせのグループ ラベルをもつ観測値が同じ分割に含まれます。
データ型: single | double | logical | char | string | cell | categorical
ホールドアウト検証に使用されるテスト セット内の観測値の比率または数。範囲 (0,1) のスカラー、または範囲 [1,n) の整数スカラーとして指定します。ここで、n は観測値の総数です。
pが範囲 (0,1) のスカラーの場合、cvpartitionはテスト セットとして約p*n個の観測値を無作為に選択します。pが範囲 [1,n) の整数スカラーの場合、cvpartitionはテスト セットとしてp個の観測値を無作為に選択します。
例: Holdout=0.2
例: Holdout=50
データ型: single | double
階層化のための変数。各観測値のクラスを示す数値ベクトル、logical ベクトル、categorical ベクトル、文字配列、string 配列、または文字ベクトルの cell 配列として指定します。cvpartition は、stratvar 内の観測値から分割を作成します。
データ型: single | double | logical | char | string | cell | categorical
階層化のインジケーター。true または false として指定します。
cvpartitionに対する最初の入力引数がstratvarの場合、cvpartitionは既定で階層化を実装します (Stratify=true)。無作為な非層化区分では、Stratify=falseを指定してください。cvpartitionに対する最初の入力引数がnの場合、cvpartitionは常に無作為な非層化区分を作成します (Stratify=false)。この場合、Stratify=trueは指定できません。
例: Stratify=false
データ型: logical
R2023b 以降
カスタム テスト セット。正の整数ベクトル、logical ベクトル、または logical 行列として指定します。
ホールドアウト検証の場合、logical ベクトルを使用してテスト セットの観測値を指定します。値
1(true) は対応する観測値がテスト セット内にあることを示し、値0(false) は対応する観測値が学習セット内にあることを示します。k 分割交差検証の場合、整数ベクトル (値の範囲は [1,k]) または k 列の logical 行列を使用してテスト セットの観測値を指定します。
整数ベクトル —
jの値は、対応する観測値がテスト セットj内にあることを示します。logical 行列 — 行 i の列 j の値は、観測値 i がテスト セット j 内にあるかどうかを示します。
k のテスト セットのそれぞれに少なくとも 1 つの観測値が含まれていなければなりません。
leave-one-out 交差検証の場合、整数ベクトル (値の範囲は [1,n]) または n 行 n 列の logical 行列を使用してテスト セットの観測値を指定します。ここで、n はデータ内の観測値の数です。
整数ベクトル —
jの値は、対応する観測値がテスト セットj内にあることを示します。logical 行列 — 行 i の列 j の値は、観測値 i がテスト セット j 内にあるかどうかを示します。
例: CustomPartition=[true false true false false] は、1 番目と 3 番目の観測値がテスト セット内にあるホールドアウト検証方式を示します。
例: CustomPartition=[1 2 2 1 3 3 1 2 3 2] は、1 番目、4 番目、および 7 番目の観測値が 1 番目のテスト セット内にある 3 分割交差検証方式を示します。
データ型: single | double | logical
プロパティ
この プロパティ は読み取り専用です。
観測値の数 (欠損した stratvar の値をもつ観測値を含む)。正の整数スカラーとして指定します。
データ型: double
この プロパティ は読み取り専用です。
分割内のテスト セットの総数。分割タイプが 'kfold' または 'leaveout' の場合は分割の数として指定し、分割タイプが 'holdout' または 'resubstitution' の場合は 1 として指定します。
データ型: double
この プロパティ は読み取り専用です。
各テスト セットのサイズ。分割タイプが 'kfold' または 'leaveout' の場合は正の整数ベクトルとして指定し、分割タイプが 'holdout' または 'resubstitution' の場合は正の整数スカラーとして指定します。
データ型: double
この プロパティ は読み取り専用です。
各学習セットのサイズ。分割タイプが 'kfold' または 'leaveout' の場合は正の整数ベクトルとして指定し、分割タイプが 'holdout' または 'resubstitution' の場合は正の整数スカラーとして指定します。
データ型: double
この プロパティ は読み取り専用です。
検証分割のタイプ。'kfold'、'holdout'、'leaveout'、'resubstitution' のいずれかとして指定します。
R2023b 以降
この プロパティ は読み取り専用です。
カスタム分割のインジケーター。logical スカラーとして指定します。カスタム分割を使用して作成されたオブジェクトの場合、値は 1 (true) です。それ以外の場合、値は 0 (false) です。
データ型: logical
R2025a 以降
この プロパティ は読み取り専用です。
グループ化された分割のインジケーター。logical スカラーとして指定します。グループ化変数 (groupingVariables) を使用して作成されたオブジェクトの場合、値は 1 (true) です。それ以外の場合、値は 0 (false) です。
データ型: logical
R2025a 以降
この プロパティ は読み取り専用です。
層化区分のインジケーター。logical スカラーとして指定します。stratifyOption の値が true の stratvar を使用して作成されたオブジェクトの場合、値は 1 (true) です。それ以外の場合、値は 0 (false) です。
データ型: logical
オブジェクト関数
repartition | 交差検証のための再分割データ |
summary | Summarize cross-validation partition with stratification or grouping variable |
test | 交差検証用のテスト インデックス |
training | 交差検証用の学習インデックス |
例
交差検証の誤分類誤差を使用して、モデルが新しいデータでどのように実行されるかを推定します。
ionosphere データ セットを読み込みます。予測子データ X と応答変数 Y を含む table を作成します。
load ionosphere
tbl = array2table(X);
tbl.Y = Y;無作為な非層化区分 hpartition を使用し、データを学習データ (tblTrain) と予約されたデータ セット (tblNew) に分割します。データの約 30% を予約します。
rng(0,"twister") % For reproducibility n = length(tbl.Y); hpartition = cvpartition(n,Holdout=0.3); idxTrain = training(hpartition); tblTrain = tbl(idxTrain,:); idxNew = test(hpartition); tblNew = tbl(idxNew,:);
学習データ tblTrain を使用して、サポート ベクター マシン (SVM) 分類モデルに学習させます。学習データの誤分類誤差と分類精度を計算します。
Mdl = fitcsvm(tblTrain,"Y");
trainError = resubLoss(Mdl)trainError = 0.0569
trainAccuracy = 1-trainError
trainAccuracy = 0.9431
通常、学習データの誤分類誤差は、新しいデータの誤分類率を過小評価する可能性があるため、モデルが新しいデータでどのように実行されるかを適切に推定できません。より正確な推定は、交差検証誤差です。
分割されたモデル cvMdl を作成します。10 分割交差検証の誤分類誤差と分類精度を計算します。既定で、crossval では必ず、各分割のクラス比率が応答変数 tblTrain.Y のクラス比率とほぼ同じに維持されます。
cvMdl = crossval(Mdl); cvtrainError = kfoldLoss(cvMdl)
cvtrainError = 0.1220
cvtrainAccuracy = 1-cvtrainError
cvtrainAccuracy = 0.8780
交差検証誤差 cvtrainError が再代入誤差 trainError より大きいことに注意してください。
学習済みの SVM モデルを使用し、tblNew の新しいデータを分類します。新しいデータの分類精度を推定精度 trainAccuracy および cvtrainAccuracy と比較します。
newError = loss(Mdl,tblNew,"Y");
newAccuracy = 1-newErrornewAccuracy = 0.8700
交差検証誤差では、再代入誤差と比較して、新しいデータにおけるモデル性能の推定が正確になります。
2 つのモデルの誤分類率を計算するには、5 分割交差検証に同じ層化区分を使用します。
fisheriris データ セットを読み込みます。行列 meas には、150 種類の花についての測定値が格納されています。変数 species には、それぞれの花の種類がリストされています。
load fisheriris層化 5 分割交差検証用に分割を無作為に作成します。学習セットとテスト セットは、花の種類の割合が species とほぼ同じです。
rng(0,"twister") % For reproducibility c = cvpartition(species,KFold=5);
c を使用して、分割された判別分析モデルと分割された分類木モデルを作成します。
discrCVModel = fitcdiscr(meas,species,CVPartition=c); treeCVModel = fitctree(meas,species,CVPartition=c);
分割された 2 つのモデルの誤分類率を計算します。
discrRate = kfoldLoss(discrCVModel)
discrRate = 0.0200
treeRate = kfoldLoss(treeCVModel)
treeRate = 0.0600
判別分析モデルでは、交差検証の誤分類率が小さくなります。
fisheriris データの 5 分割された非層化区分でテスト セット (分割) のクラスの比率を観測します。クラスの比率は分割によって異なります。
fisheriris データ セットを読み込みます。変数 species には、それぞれの花 (観測値) に対する種の名前 (クラス) が格納されています。species を変数 categorical に変換します。
load fisheriris
species = categorical(species);各クラスの観測値の数を求めます。3 つのクラスが同じ比率になっていることに注意してください。
C = categories(species)
C = 3×1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
numClasses = size(C,1); n = countcats(species)
n = 3×1
50
50
50
階層のない 5 つの部分に無作為に分割します。
rng(0,"twister") % For reproducibility cv = cvpartition(species,KFold=5,Stratify=false)
cv =
K-fold cross validation partition
NumObservations: 150
NumTestSets: 5
TrainSize: [120 120 120 120 120]
TestSize: [30 30 30 30 30]
IsCustom: 0
IsGrouped: 0
IsStratified: 0
Properties, Methods
5 つのテスト セット (分割) のそれぞれで、3 つのクラスが同じ比率で出現しないことを示します。for ループを使用して行列 nTestData を更新し、各エントリ nTestData(i,j) がテスト セット i とクラス C(j) における観測値の数に対応するようにします。nTestData のデータから棒グラフを作成します。
numFolds = cv.NumTestSets; nTestData = zeros(numFolds,numClasses); for i = 1:numFolds testClasses = species(cv.test(i)); nCounts = countcats(testClasses); nTestData(i,:) = nCounts'; end bar(nTestData) xlabel("Test Set (Fold)") ylabel("Number of Observations") title("Nonstratified Partition") legend(C)

一部のテスト セットではクラスの比率が異なることに注意してください。たとえば、最初のテスト セットでは、すべての種類の花が 10 本ずつになるのではなく、setosa 種の花が 8 本、versicolor 種の花が 13 本、virginica 種の花が 9 本となっています。cv は fisheriris データの無作為な非層化区分なので、各テスト セット (分割) におけるクラス比率は必ずしも species のクラス比率と等しくなるとは限りません。つまり、species とは異なり、各テスト セットでは、クラスの比率が必ずしも等しくなるとは限りません。
R2025a 以降
グループ化変数を使用して cvpartition オブジェクトを作成します。交差検証の概要を表示します。
津波の発生のデータを読み込み、そのデータから table を作成します。table の最初の 8 つの観測値を表示します。
Tbl = readtable("tsunamis.xlsx");
head(Tbl) Latitude Longitude Year Month Day Hour Minute Second ValidityCode Validity CauseCode Cause EarthquakeMagnitude Country Location MaxHeight IidaMagnitude Intensity NumDeaths DescDeaths
________ _________ ____ _____ ___ ____ ______ ______ ____________ _________________________ _________ __________________ ___________________ ___________________ __________________________ _________ _____________ _________ _________ __________
-3.8 128.3 1950 10 8 3 23 NaN 2 {'questionable tsunami' } 1 {'Earthquake' } 7.6 {'INDONESIA' } {'JAVA TRENCH, INDONESIA'} 2.8 1.5 1.5 NaN NaN
19.5 -156 1951 8 21 10 57 NaN 4 {'definite tsunami' } 1 {'Earthquake' } 6.9 {'USA' } {'HAWAII' } 3.6 1.8 NaN NaN NaN
-9.02 157.95 1951 12 22 NaN NaN NaN 2 {'questionable tsunami' } 6 {'Volcano' } NaN {'SOLOMON ISLANDS'} {'KAVACHI' } 6 2.6 NaN NaN NaN
42.15 143.85 1952 3 4 1 22 41 4 {'definite tsunami' } 1 {'Earthquake' } 8.1 {'JAPAN' } {'SE. HOKKAIDO ISLAND' } 6.5 2.7 2 33 1
19.1 -155 1952 3 17 3 58 NaN 4 {'definite tsunami' } 1 {'Earthquake' } 4.5 {'USA' } {'HAWAII' } 1 NaN NaN NaN NaN
43.1 -82.4 1952 5 6 NaN NaN NaN 1 {'very doubtful tsunami'} 9 {'Meteorological'} NaN {'USA' } {'LAKE HURON, MI' } 1.52 NaN NaN NaN NaN
52.75 159.5 1952 11 4 16 58 NaN 4 {'definite tsunami' } 1 {'Earthquake' } 9 {'RUSSIA' } {'KAMCHATKA' } 18 4.2 4 2236 3
50 156.5 1953 3 18 NaN NaN NaN 3 {'probable tsunami' } 1 {'Earthquake' } 5.8 {'RUSSIA' } {'N. KURIL ISLANDS' } 1.5 0.6 NaN NaN NaN
Tbl の観測値に対する 5 分割交差検証用に無作為な非層化区分を作成します。名前と値の引数 GroupingVariables を使用して、Country の値が同じ観測値が必ず同じ分割に含まれるようにします。
rng(0,"twister") % For reproducibility c = cvpartition(size(Tbl,1),KFold=5, ... GroupingVariables=Tbl.Country)
c =
Group k-fold cross validation partition
NumObservations: 162
NumTestSets: 5
TrainSize: [126 130 130 131 131]
TestSize: [36 32 32 31 31]
IsCustom: 0
IsGrouped: 1
IsStratified: 0
Properties, Methods
c は cvpartition オブジェクトです。IsGrouped プロパティの値が 1 (true) であり、オブジェクトの作成に少なくとも 1 つのグループ化変数が使用されたことを示しています。
cvpartition オブジェクト c の概要を表示します。
summaryTbl = summary(c)
summaryTbl=150×5 table
Set SetSize GroupLabel GroupCount PercentInSet
________ _______ ___________________ __________ ____________
"train1" 126 {'INDONESIA' } 25 19.841
"train1" 126 {'USA' } 15 11.905
"train1" 126 {'SOLOMON ISLANDS'} 10 7.9365
"train1" 126 {'JAPAN' } 19 15.079
"train1" 126 {'RUSSIA' } 19 15.079
"train1" 126 {'FIJI' } 1 0.79365
"train1" 126 {'GREENLAND' } 1 0.79365
"train1" 126 {'CHILE' } 6 4.7619
"train1" 126 {'GREECE' } 5 3.9683
"train1" 126 {'ECUADOR' } 1 0.79365
"train1" 126 {'VANUATU' } 5 3.9683
"train1" 126 {'TONGA' } 1 0.79365
"train1" 126 {'PHILIPPINES' } 7 5.5556
"train1" 126 {'CANADA' } 1 0.79365
"train1" 126 {'ATLANTIC OCEAN' } 1 0.79365
"train1" 126 {'FRANCE' } 1 0.79365
⋮
summaryTbl の 1 行目は、最初の学習セット Tbl(training(c,1),:) に含まれる 126 個の観測値のうちの 25 個 (約 20%) は Country の値が INDONESIA であることを示しています。この値をもつ観測値が最初のテスト セット Tbl(test(c,1),:) に含められることはありません。
最初のテスト セットに含まれる観測値の Country の値を確認します。
summaryTest1 = summaryTbl(summaryTbl.Set=="test1",:)summaryTest1=6×5 table
Set SetSize GroupLabel GroupCount PercentInSet
_______ _______ ____________________ __________ ____________
"test1" 36 {'PAPUA NEW GUINEA'} 13 36.111
"test1" 36 {'MEXICO' } 8 22.222
"test1" 36 {'PERU' } 9 25
"test1" 36 {'JAPAN SEA' } 1 2.7778
"test1" 36 {'MONTSERRAT' } 4 11.111
"test1" 36 {'TURKEY' } 1 2.7778
予想どおり、Country の値が INDONESIA である観測値は最初のテスト セットに 1 つも含まれていません。
tall 配列に対する非層化ホールドアウト分割と層化ホールドアウト分割を作成します。2 つのホールドアウト セットについて、各クラスの観測値の数を比較します。
tall 配列に対する計算を実行する場合、MATLAB® は並列プール (Parallel Computing Toolbox™ がある場合は既定) またはローカルの MATLAB セッションを使用します。Parallel Computing Toolbox がある場合にローカルの MATLAB セッションを使用して例を実行するには、関数 mapreducer を使用してグローバルな実行環境を変更します。
mapreducer(0)
クラス 1 とクラス 2 の比率が 1:10 になるように、2 つのクラスの数値ベクトルを作成します。
group = [ones(20,1);2*ones(200,1)]
group = 220×1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
⋮
group から tall 配列を作成します。
tgroup = tall(group)
tgroup =
220×1 tall double column vector
1
1
1
1
1
1
1
1
:
:
tall 配列がサポートされている cvpartition のオプションは Holdout だけです。非層化ホールドアウト分割を無作為に作成します。
CV0 = cvpartition(tgroup,Holdout=1/4,Stratify=false)
CV0 =
Hold-out cross validation partition
NumObservations: [M×N×... tall]
NumTestSets: 1
TrainSize: [M×N×... tall]
TestSize: [M×N×... tall]
IsCustom: 0
IsGrouped: 0
IsStratified: 0
Properties, Methods
関数 gather を使用して、CV0.test の結果をメモリに取得します。
testIdx0 = gather(CV0.test);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.32 sec Evaluation completed in 0.41 sec
テスト (ホールドアウト) セットにおける各クラスの出現回数を求めます。
accumarray(group(testIdx0),1)
ans = 2×1
5
51
cvpartition の結果には無作為性があるので、各クラスの観測値の数はここに示されているものと異なる可能性があります。
CV0 は非層化区分のため、ホールドアウト セットにおけるクラス 1 の観測値とクラス 2 の観測値は必ずしも tgroup と同じ比率になるとは限りません。ただし、cvpartition には無作為性があるので、Stratify=false を指定した場合でも、ホールドアウト セットにおけるクラスの比率が tgroup と同じになることがあります。学習セットはホールドアウト セットから NaN や欠損している観測値を除いた補完セットであるため、学習セットでも同様の結果を得ることができます。
CV0.training の結果をメモリに取得します。
trainIdx0 = gather(CV0.training);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.11 sec Evaluation completed in 0.15 sec
学習セットにおける各クラスの発生数を求めます。
accumarray(group(trainIdx0),1)
ans = 2×1
15
149
非層化学習セットで出現するクラスの比率は必ずしも tgroup と同じになるとは限りません。
層化ホールドアウト分割を無作為に作成します。
CV1 = cvpartition(tgroup,Holdout=1/4)
CV1 =
Hold-out cross validation partition
NumObservations: [M×N×... tall]
NumTestSets: 1
TrainSize: [M×N×... tall]
TestSize: [M×N×... tall]
IsCustom: 0
IsGrouped: 0
IsStratified: 1
Properties, Methods
CV1.test の結果をメモリに取得します。
testIdx1 = gather(CV1.test);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.078 sec Evaluation completed in 0.094 sec
テスト (ホールドアウト) セットにおける各クラスの出現回数を求めます。
accumarray(group(testIdx1),1)
ans = 2×1
5
51
層化ホールドアウト分割の場合は、ホールドアウト セットと tgroup でクラスの比率が同じ (1:10) になります。
leave-one-out 交差検証用にデータを無作為に分割します。学習セットの平均を計算して比較します。有意に異なる平均値をもつ反復値は、影響力のある観測値が存在することを示唆しています。
1 つだけ非常に大きい値を含むデータ セット X を作成します。
X = [1 2 3 4 5 6 7 8 9 20]';
学習データとテスト データのうち 10 個の観測値と 10 個の反復値をもつ cvpartition オブジェクトを作成します。各反復値について、cvpartition は観測値を 1 つ選択し、学習セットから削除してテスト セットのために予約します。
c = cvpartition(10,"Leaveout")c =
Leave-one-out cross validation partition
NumObservations: 10
NumTestSets: 10
TrainSize: [9 9 9 9 9 9 9 9 9 9]
TestSize: [1 1 1 1 1 1 1 1 1 1]
IsCustom: 0
IsGrouped: 0
IsStratified: 0
Properties, Methods
leave-one-out 分割を X に適用し、crossval を使用して反復値ごとに学習観測値の平均を計算します。
values = crossval(@(Xtrain,Xtest)mean(Xtrain),X,Partition=c)
values = 10×1
6.5556
6.4444
7.0000
6.3333
6.6667
7.1111
6.8889
6.7778
6.2222
5.0000
ボックス チャート (箱ひげ図) を使用して、学習セットの平均の分布を表示します。プロットでは外れ値が 1 つ表示されます。
boxchart(values)

外れ値に対応する反復値を見つけます。その反復値について、テスト セットで観測値を見つけます。
[~,repetitionIdx] = min(values)
repetitionIdx = 10
observationIdx = test(c,repetitionIdx); influentialObservation = X(observationIdx)
influentialObservation = 20
その観測値を含む学習セットとその観測値を含まない学習セットでは、平均値が大きく異なります。平均値のこのように大きな変化は、X 内の 20 という値が影響力のある観測値であることを示しています。
カスタムの 4 分割交差検証分割を指定して、交差検証済みの回帰木を作成します。
carbig データ セットを読み込みます。応答変数 MPG と予測子変数 Acceleration、Cylinders などを格納する table Tbl を作成します。
load carbig Tbl = table(Acceleration,Cylinders,Displacement, ... Horsepower,Model_Year,Weight,Origin,MPG);
欠損値を含む観測値を削除します。欠損値がある観測値を削除した後の table のデータのサイズを確認します。
Tbl = rmmissing(Tbl); dimensions = size(Tbl)
dimensions = 1×2
392 8
結果の table には 392 個の観測値が含まれています ()。
Tbl のデータからカスタムの 4 分割交差検証分割を作成します。最初の 98 個の観測値を 1 番目のテスト セット、次の 98 個の観測値を 2 番目のテスト セットのように順番に配置します。
testSet = ones(98,1);
testIndices = [testSet; 2*testSet; ...
3*testSet; 4*testSet];
c = cvpartition(CustomPartition=testIndices)c =
K-fold cross validation partition
NumObservations: 392
NumTestSets: 4
TrainSize: [294 294 294 294]
TestSize: [98 98 98 98]
IsCustom: 1
IsGrouped: 0
IsStratified: 0
Properties, Methods
カスタム分割 c を使用して、交差検証済みの回帰木に学習させます。モデルの性能を評価するには、交差検証平均二乗誤差 (MSE) を計算します。
cvMdl = fitrtree(Tbl,"MPG",CVPartition=c);
cvMSE = kfoldLoss(cvMdl)cvMSE = 21.2223
ヒント
cvpartitionに対する最初の入力引数としてstratvarを指定した場合、stratvarの欠損値に対応する観測値の行が破棄されます。同様に、groupingVariablesを使用して 1 つ以上のグループ化変数を指定した場合、groupingVariablesの欠損値に対応する観測値の行は破棄されます。cvpartitionに対する最初の入力引数としてstratvarを指定した場合、既定で階層化が実装されます。Stratify=falseを指定すると、無作為な非層化区分を作成できます。Stratify=trueを指定できるのは、cvpartitionに対する最初の入力引数がstratvarである場合だけです。
拡張機能
関数 cvpartition は、メモリ超過のデータに対し tall 配列をサポートしますが、いくつかの制限があります。
cvpartitionで tall 配列を使用する場合、1 番目の入力引数は階層化変数tstratvarでなければなりません。1 番目の入力引数として tall スカラーを指定すると、cvpartitionでエラーが発生します。cvpartitionでは、Holdout交差検証のみについて tall 配列がサポートされます (たとえば、c = cvpartition(tstratvar,Holdout=p))。既定では、cvpartitionはtstratvarのクラス情報を使用して観測値を階層的に学習セットとテスト セットに無作為に分割します。パラメーターpは、0 < p < 1を満たすスカラーです。非層化
Holdout分割を作成するには、名前と値の引数Stratifyの値としてfalseを指定します (たとえば、c = cvpartition(tstratvar,Holdout=p,Stratify=false))。
詳細は、メモリに収まらないデータの tall 配列を参照してください。
バージョン履歴
R2008a で導入cvpartition 関数でグループ k 分割交差検証区分の作成がサポートされます。このタイプの分割を作成するには、GroupingVariables= を指定します。ここで、groupingVariablesgroupingVariables には 1 つ以上のグループ化変数が含まれます。グループ化変数は、階層化変数 stratvar を使用する場合は指定できません。
cvpartition オブジェクトに IsGrouped と IsStratified の 2 つの追加プロパティがあります。いずれかのプロパティの値が 1 (true) の場合、summary オブジェクト関数を使用してオブジェクトに関する概要情報を表示できます。
関数 cvpartition でカスタムの交差検証分割の作成がサポートされます。名前と値の引数 CustomPartition を使用してテスト セットの観測値を指定します。たとえば、cvpartition("CustomPartition",testSets) は、testSets のテスト セットに基づいてデータを分割するように指定します。結果の cvpartition オブジェクトの IsCustom プロパティは 1 (true) に設定されます。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)