機械学習による時系列解析について サポートベクター回帰
4 views (last 30 days)
Show older comments
サポートベクター回帰を用いて時系列データの解析を行っています。
以下のプログラムにおいて「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 Comments
Kenta
on 9 Nov 2019
問題設定による気がします。例えば、1~10個目のデータを用いて、B1を予想、
2~11を用いてB2を予想、のようにできるのなら必ずしもLSTMでなくてもよいと思います。ただ、これも問題設定によりますし、もしLSTM以外でやりたければ、詳しく問題設定を述べられると良いと思います。
Accepted Answer
Kenta
on 7 Nov 2019
こんにちは、観測数というのは、ここでは、データの数という解釈でよいのではと思います。
下のように打つと、訓練データと、そのラベルのサイズを見ることができます。
すると、訓練データ・ラベル、ともに210*1440という形になっています。
SVM回帰だと、データ数が210(または1440)で、それに対応する、数値のデータが210(または1440)個
必要だと思います。
しかし、今回は、ラベルのほうも210*1440という形になっているため、うまく実行することができません。
質問者様は「シークエンスから数値」を予測したいのか、それとも「シークエンスからシークエンス」の予測をしたいのでしょうか。
前者のほうであれば、ラベルのほうを変更すれば動くと思います。
size(tbl.Var1)
size(tbl.Var2)
2 Comments
More Answers (0)
See Also
Categories
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!