やはり時系列データを用いたシークエンスtoシークエンスの予測ははLSTMしかできないんですかね。
機械学習による時系列解析について サポートベクター回帰
8 ビュー (過去 30 日間)
表示 古いコメント
サポートベクター回帰を用いて時系列データの解析を行っています。
以下のプログラムにおいて「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); %ここでエラー
採用された回答
Kenta
2019 年 11 月 7 日
こんにちは、観測数というのは、ここでは、データの数という解釈でよいのではと思います。
下のように打つと、訓練データと、そのラベルのサイズを見ることができます。
すると、訓練データ・ラベル、ともに210*1440という形になっています。
SVM回帰だと、データ数が210(または1440)で、それに対応する、数値のデータが210(または1440)個
必要だと思います。
しかし、今回は、ラベルのほうも210*1440という形になっているため、うまく実行することができません。
質問者様は「シークエンスから数値」を予測したいのか、それとも「シークエンスからシークエンス」の予測をしたいのでしょうか。
前者のほうであれば、ラベルのほうを変更すれば動くと思います。
size(tbl.Var1)
size(tbl.Var2)
2 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Find more on サポート ベクター マシン回帰 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!