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

4 vues (au cours des 30 derniers jours)
ssk
ssk le 28 Fév 2019
Commenté : Kenta le 24 Jan 2020
プログラミング初心者です。
以下のディレクトリ構造に基づき、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');
下記コード以降に交差検定を導入するコードを導入するかと思うのですが、現状アイディアが思い浮かびません。

Réponse acceptée

Kenta
Kenta le 1 Mar 2019
Modifié(e) : Kenta le 1 Mar 2019
[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 commentaires
ssk
ssk le 16 Avr 2019
itakura様、度々のご連絡大変失礼いたします。
eval関数につきまして、eval(['trainimds' ,'=', stname,';'])となっておりますが、ここでなぜ '='としているのかご教示いただけますでしょうか。 trainimdsをtrainimds1.....trainimds10と出力するのに'='は必ず必要ないと考えましたのですが。。
Kenta
Kenta le 24 Jan 2020
trainimds=stname;
とすることを意図しています。ただ、evalはいらないような気もします。
今回はtrainimdsという名前の変数にtrainimds1, ...を与えるので=が必要です。
b=10という変数があって、a=b;とするのと同様です。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB 入門 dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!