フィルターのクリア

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

18 ビュー (過去 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 件のコメント
Kenta
Kenta 2019 年 11 月 9 日
問題設定による気がします。例えば、1~10個目のデータを用いて、B1を予想、
2~11を用いてB2を予想、のようにできるのなら必ずしもLSTMでなくてもよいと思います。ただ、これも問題設定によりますし、もしLSTM以外でやりたければ、詳しく問題設定を述べられると良いと思います。
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 件のコメント
Naoto Iwaki
Naoto Iwaki 2019 年 11 月 7 日
最終的に後者のシークエンスからシークエンスの予測をしたいです。
Kenta
Kenta 2019 年 11 月 8 日
それだと、LSTMのシークエンス to シークエンスのほうがよさそうですね。

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

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeサポート ベクター マシン回帰 についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!