機械学習による時系列​解析について サポー​トベクター回帰

4 visualizzazioni (ultimi 30 giorni)
Naoto Iwaki
Naoto Iwaki il 7 Nov 2019
Commentato: Naoto Iwaki il 9 Nov 2019
サポートベクター回帰を用いて時系列データの解析を行っています。
以下のプログラムにおいて「XとYの観測数が同じではない」と言うエラーがはいたものの
ここでいう観測数というのが何を指しているのがわからないです。
また、どのように修正すべきか教えていただくと幸いです。
opts = detectImportOptions('pressure_data_Kusaka_Lab_20190326_1.xlsx','DataRange','B5');
T1=readtable('pressure_data_Kusaka_Lab_20190326_1.xlsx',opts,'ReadVariableNames',false);
T1_data = T1.Variables;
%1行N列の配列へ
for i=1:300
T1_array{i}=T1_data(1:end,i)';
end
%転置
T1_a=(T1_array)';
B=cell2mat(T1_a);
%シーケンスの最初の70%で学習を行い残りの30%でテストする
numTimeStepsTrain = floor(0.7*numel(T1_a));
T1Train = T1_a(1:numTimeStepsTrain+1);
T1Test = T1_a(numTimeStepsTrain+1:end);
XT1Train=T1Train(1:end-1); %入力
YT1Train=T1Train(2:end); %出力応答(入力データを1周期分ずらしたデータ)
tbl=cell2table([XT1Train YT1Train]);
%svmMdl=fitrsvm(tbl.Var1,tbl.Var2); %ここでエラー
  3 Commenti
Kenta
Kenta il 9 Nov 2019
問題設定による気がします。例えば、1~10個目のデータを用いて、B1を予想、
2~11を用いてB2を予想、のようにできるのなら必ずしもLSTMでなくてもよいと思います。ただ、これも問題設定によりますし、もしLSTM以外でやりたければ、詳しく問題設定を述べられると良いと思います。
Naoto Iwaki
Naoto Iwaki il 9 Nov 2019
丁寧にありがとうございます。

Accedi per commentare.

Risposta accettata

Kenta
Kenta il 7 Nov 2019
こんにちは、観測数というのは、ここでは、データの数という解釈でよいのではと思います。
下のように打つと、訓練データと、そのラベルのサイズを見ることができます。
すると、訓練データ・ラベル、ともに210*1440という形になっています。
SVM回帰だと、データ数が210(または1440)で、それに対応する、数値のデータが210(または1440)個
必要だと思います。
しかし、今回は、ラベルのほうも210*1440という形になっているため、うまく実行することができません。
質問者様は「シークエンスから数値」を予測したいのか、それとも「シークエンスからシークエンス」の予測をしたいのでしょうか。
前者のほうであれば、ラベルのほうを変更すれば動くと思います。
size(tbl.Var1)
size(tbl.Var2)
  2 Commenti
Naoto Iwaki
Naoto Iwaki il 7 Nov 2019
最終的に後者のシークエンスからシークエンスの予測をしたいです。
Kenta
Kenta il 8 Nov 2019
それだと、LSTMのシークエンス to シークエンスのほうがよさそうですね。

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!