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

8 ビュー (過去 30 日間)
Naoto Iwaki
Naoto Iwaki 2019 年 11 月 7 日
コメント済み: Naoto Iwaki 2019 年 11 月 9 日
サポートベクター回帰を用いて時系列データの解析を行っています。
以下のプログラムにおいて「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 件のコメント
Naoto Iwaki
Naoto Iwaki 2019 年 11 月 9 日
丁寧にありがとうございます。

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

採用された回答

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

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

その他の回答 (0 件)

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!