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

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

 Respuesta aceptada

MathWorks Support Team
MathWorks Support Team el 12 de Mayo de 2017
Editada: MathWorks Support Team el 10 de Mayo de 2017

1 voto

はい、<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);
 

Más respuestas (0)

Categorías

Más información sobre Deep Learning Toolbox en Centro de ayuda y File Exchange.

Community Treasure Hunt

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

Start Hunting!