필터 지우기
필터 지우기

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

조회 수: 6 (최근 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 CenterFile Exchange에서 サポート ベクター マシン回帰에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!