Effacer les filtres
Effacer les filtres

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

6 vues (au cours des 30 derniers jours)
Naoto Iwaki
Naoto Iwaki le 7 Nov 2019
Commenté : Naoto Iwaki le 9 Nov 2019
サポートベクター回帰を用いて時系列データの解析を行っています。
以下のプログラムにおいて「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 commentaires
Kenta
Kenta le 9 Nov 2019
問題設定による気がします。例えば、1~10個目のデータを用いて、B1を予想、
2~11を用いてB2を予想、のようにできるのなら必ずしもLSTMでなくてもよいと思います。ただ、これも問題設定によりますし、もしLSTM以外でやりたければ、詳しく問題設定を述べられると良いと思います。
Naoto Iwaki
Naoto Iwaki le 9 Nov 2019
丁寧にありがとうございます。

Connectez-vous pour commenter.

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!