kfoldfun
交差検証済み ECOC モデルを使用する交差検証関数
説明
例
マルチクラス ECOC 分類器に学習をさせてから、カスタム k 分割損失関数を使用してモデルを交差検証します。
フィッシャーのアヤメのデータ セットを読み込みます。予測子データ X、応答データ Y、および Y 内のクラスの順序を指定します。
load fisheriris X = meas; Y = categorical(species); classOrder = unique(Y); % Class order rng(1); % For reproducibility
サポート ベクター マシン (SVM) バイナリ分類器を使用して、ECOC モデルの学習と交差検証を行います。SVM テンプレートを使用して予測子を標準化し、クラスの順序を指定します。
t = templateSVM('Standardize',1); CVMdl = fitcecoc(X,Y,'CrossVal','on','Learners',t,... 'ClassNames',classOrder);
CVMdl は ClassificationPartitionedECOC モデルです。既定では、10 分割交差検証が実行されます。
検証分割観測値の分類誤差 (誤分類された観測値の比率) を計算します。
L = kfoldLoss(CVMdl)
L = 0.0400
花を versicolor として誤分類するコストが 10、他の誤分類のコストが 1 である場合の結果を確認します。一般的な誤分類の場合のコストとして 1、花を versicolor に誤分類する場合のコストとして 10 を割り当てる、noversicolor という名前の関数を作成します。
この例のライブ スクリプト ファイルを使用している場合、関数 noversicolor は既にファイルの終わりに含まれています。それ以外の場合は、この関数を .m ファイルの終わりに作成するか、MATLAB® パス上のファイルとして追加する必要があります。
noversicolor コストの平均誤分類誤差を計算します。
foldLoss = kfoldfun(CVMdl,@noversicolor); mean(foldLoss)
ans = single
0.0667
次のコードは、関数 noversicolor を作成します。
function averageCost = noversicolor(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest) % noversicolor: Example custom cross-validation function that assigns a cost of % 10 for misclassifying versicolor irises and a cost of 1 for misclassifying % 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 = single(cost/numel(Ytest)); % Average error end
入力引数
交差検証 ECOC モデル。ClassificationPartitionedECOC モデルとして指定します。
交差検証関数。関数ハンドルを指定します。fun の構文は次のとおりです。
testvals = fun(CMP,Xtrain,Ytrain,Wtrain,Xtest,Ytest,Wtest)
CMPは、CVMdl.Trainedプロパティの 1 つの要素に格納されているコンパクト モデルです。Xtrainは、予測値の学習行列です。Ytrainは、応答値の学習配列です。Wtrainは、観測値に対する一連の学習の重みです。XtestおよびYtestは、重みWtestが関連付けられた検証データです。戻り値
testvalsは、すべての分割で同じサイズでなければなりません。
データ型: function_handle
出力引数
交差検証の結果。数値行列として返されます。vals は出力 testvals の配列に対応し、すべての分割で垂直に連結されます。たとえば、すべての分割からの testvals が、長さ n の数値ベクトルである場合、kfoldfun は、1 つの分割につき 1 行で KFold 行 n 列の数値行列を返します。
拡張機能
使用上の注意事項および制限事項:
funがgpuArray入力もサポートする場合、kfoldfunはgpuArray入力で学習させたモデルをサポートします。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2014b で導入
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)