主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

MATLAB函数ブロックの使用によるクラスラベルの予測

この例では,ラベル予測用にMATLAB®函数ブロックを仿真软件®モデルに追金宝app加する方法を示します。このMATLAB函数ブロックは,ストリーミングデータを受け入れて,学習済みのサポートベクターマシン(SVM)分類モデルを使用することによりラベルと分類スコアを予測します。MATLAB函数ブロックの使用法の詳細にいては,MATLAB函数ブロックを使用したカスタム機能の作成(金宝app模型)を参照してください。

分類モデルの学習

この例では,电离层デ,タセットを使用します。これには,レ,ダ,反射の品質(Y)および予測子デ,タ(X)が含まれます。レ、ダ、反射の品質は良好(‘g’)または不良(“b”)のいずれかです。

电离层デ,タセットを読み込みます。標本サ@ @ズを調べます。

负载电离层n =数字(Y)
N = 351

MATLAB函数ブロックでcell配列を返すことはできません。レ,ダ,反射が良好な場合は要素が1,それ以外の場合は0である逻辑ベクトルに応答変数を変換します。

Y = strcmp(Y,‘g’);

レーダー反射は連続的に検出されるものとし,また,はじめの300個の観測値を入手しており,残りの51個はまだ入手していないとします。現在の標本と将来の標本にデ,タを分割します。

prsntX = X(1:300,:);prsntY = Y(1:300);ftrX = X(301:end,:);ftrY = Y(301:end);

現在利用できるすべてのデ,タを使用して支持向量机モデルに学習をさせます。予測子デ,タを標準化するよう指定します。

Mdl = fitcsvm(prsntX,prsntY,“标准化”,真正的);

MdlClassificationSVMモデルです。

saveLearnerForCoderの使用によるモデルの保存

コマンドラ电子邮箱ンでは,Mdlを使用して新しい観測値にいて予測を行うことができます。しかし,コ,ド生成用の関数で入力引数としてMdlを使用することはできません。

saveLearnerForCoderを使用して,関数内に読み込めるようにMdlを準備します。

saveLearnerForCoder (Mdl“SVMIonosphere”);

saveLearnerForCoderMdlをコンパクトにしてからmatファescルSVMIonosphere.matに保存します。

Matlab関数の定義

レ,ダ,反射が良好な品質であるかどうかを予測するsvmIonospherePredict.mという名前のmatlab関数を定義します。関数は次の条件を満たさなければなりません。

  • コ,ド生成命令% # codegenを関数内に含める。

  • レ,ダ,反射の予測子デ,タを受け入れる。デ,タは,行数以外はXと同等でなければなりません。

  • loadLearnerForCoderを使用してSVMIonosphere.matを読み込む。

  • 予測されたラベルと,レーダー反射の品質を良好であると予測する分類スコア(つまり,陽性クラススコア)を返す。

函数[label,score] = svmIonospherePredict(X)% # codegen使用SVM模型预测雷达回波质量% svmIonospherePredict预测标签和估计分类雷达返回的%分数在预测器数据X的数值矩阵中在文件SVMIonosphere.mat中使用紧凑的SVM模型。X行%对应观测值,列对应预测变量。标签%为预测标签,得分为置信度%雷达返回质量为良好。版权所有The MathWorks Inc.Mdl = loadLearnerForCoder(“SVMIonosphere”);[label,bothscores] = predict(Mdl,X);分数= bothscores(:,2);结束

メモ:このページの右上にあるボタンをクリックしてこの例をMATLABで開くと,MATLABで例のフォルダーが開きます。このフォルダには,エントリポント関数のファルが含まれています。

金宝appSimulinkモデルの作成

svmIonospherePredict.mにディスパッチするMATLAB函数ブロックを使用して仿真软件モデルを作成金宝appします。

この例では,金宝appSimulinkモデルslexSVMIonospherePredictExample.slxが用意されています。金宝appSimulinkモデルを開きます。

SimMdlName =“slexSVMIonospherePredictExample”;open_system (SimMdlName)

金宝appSimulinkモデルが图に表示されます。入力ノ,ドでレ,ダ,反射が検出されると,svmIonospherePredict.mにディスパッチするMATLAB函数ブロックにその観測値が送られます。ラベルとスコアを予測した後で,これらの値がワークスペースに返され,モデル内の値が一度に1つずつ表示されます。slexSVMIonospherePredictExample.slxを読み込む際,matlabはradarReturnInputという名前の必要なデ,タセットも読み込みます。しかし,この例では必要なデ,タセットを構築する方法を示します。

このモデルでは,次のフィ,ルドが含まれているradarReturnInputという名前の構造体配列を入力デ,タとして受け入れることを想定しています。

  • 时间-観測値がモデルに入力された時点。この例では,0~ 50 の整数を期間に含めます。方向は予測子データ内の観測値に対応しなければなりません。したがって、この例の場合は时间が列ベクトルでなければなりません。

  • 信号-フィ,ルドとフィ,ルドが含まれている,入力デ,タを説明する1行1列の構造体配列。は予測子デ,タの行列,は予測子変数の個数です。

将来のレ,ダ,反射用に適切な構造体配列を作成します。

radarReturnInput。时间= (0:50)';radarReturnInput.signals(1)。values = ftrX;radarReturnInput.signals(1)。维度= size(ftrX,2);

ここで名前をradarReturnInputから変更して,新しい名前をモデル内で指定できます。ただし,金宝appSimulinkでは,前述したフィ,ルド名が構造体配列に含まれていると想定しています。

学習から取り分けておいたデタ,まりradarReturnInputのデ,タを使用してモデルをシミュレ,トします。

sim (SimMdlName);

radarReturnInput内のすべての観測値が一度に1X(351年:)にいて予測されたラベルは1,陽性クラススコアは1.431です。変数吹捧およびsvmlogsoutがワ,クスペ,スに表示されます。svmlogsoutは,予測したラベルおよびスコアが含まれている金宝appSimulinkData。数据集オブジェクトです。詳細は,記録されたシミュレ,ションデ,タのデ,タ形式(金宝app模型)を参照してください。

シミュレ,ションデ,タをシミュレ,ションログから抽出します。

labelsSL = svmlogsout.getElement(1).Values.Data;scoresSL = svmlogsout.getElement(2).Values.Data;

labelsSLは,予測したラベルが格納されている51行1列の数値ベクトルです。labelsSL (j)は,将来の標本におけるレ,ダ,反射jの品質が良好であると支持向量机モデルが予測した場合は1,それ以外の場合は0になります。scoresSLは,陽性クラススコア,つまり判定境界からの符号付き距離が格納されている51行1列の数値ベクトルです。陽性スコアは予測したラベルの値1に,陰性スコアは0に対応します。

预测を使用してコマンドラ@ @ンでラベルと陽性クラススコアを予測します。

[labelCMD,scoresCMD] = predict(Mdl,ftrX);scoresCMD = scoresCMD(:,2);

labelCMDscoresCMDlabelsSLおよびscoresSLに相応します。

slexSVMIonospherePredictExampleが返した将来の標本の陽性クラススコアを,コマンドラ预测を呼び出すことにより得られたスコアと比較します。

err = sum((scoresCMD - scoresSL).^2);Err < eps
ans =逻辑1

スコアの集合間における偏差の二乗和は無視できる値です。

金宝appSimulink Coder™のラ▪▪センスもある場合,SimulinkのslexSVMIonospherePredictExample.slxまたはコマンドラ@ @ンからslbuild(金宝app模型)を使用してcコ,ドを生成できます。詳細は,モデル用cコ,ドの生成(金宝app仿真软件编码器)を参照してください。

参考

|||(金宝app模型)|

関連するトピック