Table 型の変数をニューラル​ネットワークの入力と​して使用する方法はあ​りますか?

ニューラルネットワークを実行したいと考えています。他の機械学習の手法で分類、回帰、クラスタリングを行う際には Table 型のデータをそのまま関数の入力引数とすることができました。しかし、ニューラルネットワークの関数は Table 型に対応していないようです。ニューラルネットワークの関数に入力できる形に変更する方法はありませんか。

 Accepted Answer

MathWorks Support Team
MathWorks Support Team on 12 May 2017
Edited: MathWorks Support Team on 10 May 2017

1 vote

はい、<https://jp.mathworks.com/help/stats/dummyvar.html dummyvar> 関数を使うことで変換することができます。
以下の例では、cars.Model_Year というカテゴリカルの変数を dymmyvar 関数を使用してニューラルネットワークの関数で扱えるように0と1で表現する形に変換しています。その後、Table 型の変数 cars のテーブルとして追加し、最終的に table2array 関数 で double 型配列に直しています。
 
% データの読み込み
load('carsmall')
cars = table(MPG,Weight,Model_Year);
cars.Model_Year = categorical(cars.Model_Year);
categories(cars.Model_Year)
% テーブル cars はカテゴリカル型の変数 Model_Year を含んでいます。
D = dummyvar(cars.Model_Year);
D = array2table(D);
D.Properties
% テーブル cars に新規の列を追加します。
cars = [cars, D];
cars.Model_Year =[];
% テーブル型から行列に変換します。
inputs = table2array(cars(:,2:5))'; % R-by-Q
targets = cars.MPG'; % U-by-Q matrix
hiddenLayerSize = 10;
net = fitnet(hiddenLayerSize);
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
[net,tr] = train(net,inputs,targets);
 

More Answers (0)

Categories

Find more on Deep Learning Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!