主要内容

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

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

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

分類モデルの学習

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

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

负载电离层n =元素个数(Y)
n = 351

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

Y = strcmp (Y,‘g’);

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

prsntX = X(施用:);prsntY = Y(施用);ftrX = X(301年:,);ftrY = Y(301:结束);

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

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

MdlClassificationSVMモデルです。

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

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

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

saveLearnerForCoder (Mdl“SVMIonosphere”);

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

MATLAB関数の定義

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

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

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

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

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

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

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

万博1manbetx仿真软件モデルの作成

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

この例では,万博1manbetx仿真软件モデルslexSVMIonospherePredictExample.slxが用意されています。万博1manbetx仿真软件モデルを開きます。

SimMdlName =“slexSVMIonospherePredictExample”;open_system (SimMdlName)

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

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

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

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

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

radarReturnInput。时间= (0:50)';radarReturnInput.signals(1)。值= ftrX;radarReturnInput.signals(1)。尺寸大小= (ftrX 2);

ここで名前をradarReturnInputから変更して,新しい名前をモデル内で指定できます。ただし,万博1manbetx仿真软件では,前述したフィールド名が構造体配列に含まれていると想定しています。

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

sim (SimMdlName);

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

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

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

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

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

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

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

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

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

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

万博1manbetx仿真软件编码器™のライセンスもある場合,仿真软件のslexSVMIonospherePredictExample.slxまたはコマンドラインからslbuild(万博1manbetx模型)を使用してCコードを生成できます。詳細は,モデル用Cコードの生成(万博1manbetx仿真软件编码器)を参照してください。

参考

|||(万博1manbetx模型)|

関連するトピック