ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

kfoldfun

構文

vals = kfoldfun(CVMdl,fun)

説明

vals = kfoldfun(CVMdl,fun) では、交差検証済みモデル CVMdl に保存されたデータに fun を適用することにより、関数 fun の交差検証が行われます。関数 fun は、関数ハンドルとして渡す必要があります。

入力引数

すべて展開する

交差検証済みモデル。ClassificationPartitionedECOC モデル、ClassificationPartitionedEnsemble モデルまたは ClassificationPartitionedModel モデルとして指定します。

交差検証関数。関数ハンドルとして指定します。fun には構文が含まれます。

testvals = fun(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
  • CMP は、CVMdl.Trained プロパティの 1 つの要素に保存されたコンパクト モデルです。

  • Xtrain は、予測値の学習行列です。

  • Ytrain は、応答値の学習配列です。

  • Wtrain は観測に適用される学習の重みです。

  • Xtest および Ytest は、重み Wtest が関連付けられた検定データです。

  • 戻り値 testvals は、すべての分割で同じサイズでなければなりません。

データ型: 関数ハンドル

出力引数

すべて展開する

交差検証の結果。行列として返されます。valstestvals 出力の配列であり、すべての分割で垂直に連結されます。たとえば、すべての分割からの testvals が、長さ N の数値ベクトルである場合、kfoldfun は、1 つの分割につき 1 行で KFoldN 列の数値行列を返します。

データ型: double

すべて展開する

分類木分類器を学習させます。カスタム k 分割損失関数を使い、これを交差検証します。

フィッシャーのアヤメのデータセットを読み込みます。

load fisheriris

分類木分類器を学習させます。

Mdl = fitctree(meas,species);

MdlClassificationTree モデルです。

既定の 10 分割交差検証を使用して Mdl を交差検証します。分割外の観測値の分類誤差 (誤分類された観測の比率) を計算します。

rng(1); % For reproducibility
CVMdl = crossval(Mdl);
L = kfoldLoss(CVMdl)
L =

    0.0467

花を 'versicolor' と誤分類するコストを10 として、その他の誤差を 1 とする結果を調査します。noversicolor.m という関数を作成し、MATLAB® パスに保存します。この関数は、誤分類のコストを 1 として、花を versicolor と誤分類する場合のコストを 10 とします。

function averageCost = noversicolor(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
%noversicolor Example custom cross-validation function
%   Attributes a cost of 10 for misclassifying versicolor irises, and 1 for
%   the other irises.  This example function requires the |fisheriris| data
%   set.
Ypredict = predict(CMP,Xtest);
misclassified = not(strcmp(Ypredict,Ytest)); % Different result
classifiedAsVersicolor = strcmp(Ypredict,'versicolor'); % Index of bad decisions
cost = sum(misclassified) + ...
    9*sum(misclassified & classifiedAsVersicolor); % Total differences
averageCost = cost/numel(Ytest); % Average error
end


noversicolor コストの平均誤分類誤差を計算します。

mean(kfoldfun(CVMdl,@noversicolor))
ans =

    0.2267