回帰学習モデルのApp Designerへの実装について

回帰学習アプリ(Statistics and Machine Learning Toolbox)で作った統計モデルをApp Designerで使用したいです。
回帰学習器アプリでエクスポートしたモデルをMATLAB Functionブロックと同様にloadLearnerForCoderで呼び出して実行しようとしましたがモデルが見つかりませんと言うエラーが出てしまいます。
使用している回帰モデル:線形回帰モデル、ガウス過程回帰モデル

 Accepted Answer

Kojiro Saito
Kojiro Saito on 9 Jan 2024
loadLearnerForCoderはC/C++コード生成を行うためのモデルの読み込みですが、今回はApp Designerで使用するためなのでloadで十分です。
回帰学習器アプリでエクスポートしたモデルの変数(例:trainedModel)をワークスペースで右クリック「名前を付けて保存」からmatファイル(ファイル名の例:model.mat)として保存します。それをApp Designerのコールバックのどこかで下記のようにloadで読み込めばOKです。
load('model.mat')

6 Comments

hiroshiii
hiroshiii on 10 Jan 2024
早々にご回答いただきありがとうございました。
load('model.mat')の呼び出しも試したのですが同様に、
「ファイルまたはディレクトリ'model.mat'が見つかりません。」
と言うエラーが出てしまいます。よろしくお願いいたします。
Kojiro Saito
Kojiro Saito on 10 Jan 2024
matファイルがMATLABの現在のフォルダーやパスが通っているところにないのが原因です。
App Designerの.mlappのファイルと同じフォルダーにmatファイルを置いてみてください。
hiroshiii
hiroshiii on 10 Jan 2024
早々に誠にありがとうございます。読み込み問題、解決できました。
ただ、以下の様に計算値が返って来ない状況です。よろしくお願いいたします。
S = load('model.mat');
<トライ1>
Y = predict(S, X); % Xは入力する2変数(200*2 double)
エラーメッセージ:
モデルの入力数と出力数はデータの入力数と出力数と一致しなければなりません
<トライ2>
Y = S.predictFcn(X);
エラーメッセージ:
フィールド名 ”predictFcn"が認識されません。
loadだけを実行するとワークスペース変数がそのまま読み込まれ、trainedModeltrainedModelとしてワークスペースに格納されます。
出力変数を割り当てると、その中のフィールド値として格納されるので、
S = load('model.mat');
Y = predict(S.trainedModel, X);
とすれば実行できると思います。
hiroshiii
hiroshiii on 10 Jan 2024
フィールド名"trainedModel"が認識されません。と言うエラーが出てしまいます。
loadしたModel.matの構造は1*1 structで、
その中はcompactStruct(1*1 struct)となっています。
モデルをcompactStructという名前で保存しているようなので、
S = load('model.mat');
Y = predict(S.compactStruct, X);
でどうでしょうか?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!