交差検定(cross​-validatio​n)につきまして

5 ビュー (過去 30 日間)
ssk
ssk 2019 年 2 月 28 日
コメント済み: Kenta 2020 年 1 月 24 日
プログラミング初心者です。
以下のディレクトリ構造に基づき、cross-validationのコードを自力で書きたいと思っていますが、
数週間考えてもどのように分割していいか分からず質問いたします。
どうぞよろしくお願いいたします。
main
-- a
-- image
 -- b
  -- image
 -- c
  -- image
-- d
  -- image
%path = current directory
currentdirectory = pwd;
categories = {'a', 'b', 'c','d'};
%Create an ImageDatastore to help you manage the data.
imds = imageDatastore(fullfile(currentdirectory, categories),'IncludeSubfolders',true,'FileExtensions','.dcm','LabelSource', 'foldernames','ReadFcn');
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,'randomize');
下記コード以降に交差検定を導入するコードを導入するかと思うのですが、現状アイディアが思い浮かびません。

採用された回答

Kenta
Kenta 2019 年 3 月 1 日
編集済み: Kenta 2019 年 3 月 1 日
[imds01,imds02,imds03,imds04,imds05,imds06,imds07,imds08,imds09,imds010]...
= splitEachLabel(imds,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,'randomize');
imdsTrain1 = imageDatastore(cat(1,imds01.Files,imds02.Files,imds03.Files,imds04.Files,imds05.Files,imds06.Files,imds07.Files,imds08.Files,imds09.Files));
imdsTrain1.Labels = cat(1,imds01.Labels,imds02.Labels,imds03.Labels,imds04.Labels,imds05.Labels,imds06.Labels,imds07.Labels,imds08.Labels,imds09.Labels);
交差検証であれば、crossvalの関数で、任意の分割数で交差検証ができます。その際、実行するコードをfunction化して、
入れ子にすればよいです。
ただ、上のように、かなり無理やりではありますが、全画像を10個に分けたほうがわかりやすいかもしれません。添付のファイルを実行してみてください。
imdsとして、全画像を読み込む
spritEachLabelで10個に分ける
imdsTrain〇として、10個分に分ける
以下for文
for i=1:10
imdsTrain〇(〇にはiの値)で訓練データ
imdsValidation〇(〇には10-iの値、はじめにimdsTrain〇には、imds0〇だけ除外するようにしておく)
通常の流れにそって、imdsTrainで訓練し、imdsValidationでテストする
end
この手書き文字の判別を10点交差検証で行っています。時間がかかるので、maxepochsを1にしています。4にすれば、精度があがるはずです。
  10 件のコメント
ssk
ssk 2019 年 4 月 16 日
itakura様、度々のご連絡大変失礼いたします。
eval関数につきまして、eval(['trainimds' ,'=', stname,';'])となっておりますが、ここでなぜ '='としているのかご教示いただけますでしょうか。 trainimdsをtrainimds1.....trainimds10と出力するのに'='は必ず必要ないと考えましたのですが。。
Kenta
Kenta 2020 年 1 月 24 日
trainimds=stname;
とすることを意図しています。ただ、evalはいらないような気もします。
今回はtrainimdsという名前の変数にtrainimds1, ...を与えるので=が必要です。
b=10という変数があって、a=b;とするのと同様です。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMATLAB 入門 についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!