このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
機械学習モデルのコ,ダ,コンフィギュアラ,の作成
機械学習モデルに学習をさせた後で,learnerCoderConfigurer
を使用してモデルのコ,ダ,コンフィギュアラ,を作成します。コンフィギュアラーのプロパティとオブジェクト関数を使用することにより,コード生成オプションを指定し,機械学習モデルの関数预测
および更新
に対するc / c++コドを生成します。C/ c++コ,ドの生成にはMATLAB®编码器™が必要です。
次のフローチャートは,コーダーコンフィギュアラーを使用するコード生成のワークフローを示します。強調表示されているステップでlearnerCoderConfigurer
を使用します。
機械学習モデルに学習させてから,コ,ダ,コンフィギュアラ,を使用して,このモデルの関数预测
および更新
に対してコ,ドを生成します。
carsmall
デ,タセットを読み込み,サポ,トベクタ,マシン(svm)回帰モデルに学習をさせます。
负载carsmallX =[马力,重量];Y = mpg;Mdl = fitrsvm(X,Y);
Mdl
は,RegressionSVM
オブジェクトです。
learnerCoderConfigurer
を使用して,RegressionSVM
モデルに。予測子デ,タX
を指定します。関数learnerCoderConfigurer
は,入力X
を使用して,関数预测
の入力のコ,ダ,属性を設定します。
configurer = learnerCoderConfigurer(Mdl,X)
configurer = RegressionSVMCoderConfigurer with properties: Update input: Alpha: [1x1 LearnerCoderInput] S万博1manbetxupportVectors: [1x1 LearnerCoderInput] Scale: [1x1 LearnerCoderInput] Bias: [1x1 LearnerCoderInput] Predict input: X: [1x1 LearnerCoderInput]代码生成参数:NumOutputs: 1 OutputFileName: ' regressionsvdermodel '属性,方法
配置
は,RegressionSVM
オブジェクトのコ,ダ,コンフィギュアラ,であるRegressionSVMCoderConfigurer
オブジェクトです。
C / c++コードを生成するには,適切に設定されているC / c++コンパイラにアクセスできなければなりません。MATLAB编码器は,サポ,トされている,ンスト,ラを探して使用します。墨西哥人
设置
を使用すると,既定のコンパ。詳細は,既定のコンパ@ @ラの変更を参照してください。
既定の設定を使用して,svm回帰モデル(Mdl
)の関数预测
および更新
に対するコ,ドを生成します。
generateCode(配置)
generateCode在output文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“RegressionSVMModel。代码生成成功。
関数generateCode
は,以下の処理を実行します。
コドを生成するために必要なmatlabファルを生成する。これには,Mdl
の関数预测
および更新
にそれぞれ対応する2のエントリポント関数predict.m
およびupdate.m
が含まれます。
2のエントリポント関数に対して,RegressionSVMModel
という名前のmex関数を作成する。
Mex関数のコ,ドをcodegen \墨西哥人\ RegressionSVMModel
フォルダ,に作成する。
Mex関数を現在のフォルダ,にコピ,する。
関数类型
を使用して,predict.m
、update.m
およびinitialize.m
ファ@ @ルの内容を表示します。
类型predict.m
function varargout = predict(X,varargin) %#codegen %由MATLAB自动生成,26-Jun-2021 04:54:55 [varargout{1:nargout}] =初始化('predict',X,varargin{:});结束
类型update.m
函数更新(varargin) %#codegen %由MATLAB自动生成,26-Jun-2021 04:54:55初始化('update',varargin{:});结束
类型initialize.m
function [varargout] = initialize(command,varargin) %#codegen %由MATLAB自动生成,26-Jun-2021 04:54:55 code .inline('always')持久化模型if isempty(模型)model = loadLearnerForCoder('RegressionSVMModel.mat');end switch(command) case 'update' %更新结构字段:Alpha % SupportVectors %万博1manbetx Scale %偏差模型= update(model,varargin{:});预测输入:X X = varargin{1};if nargin == 2 [varargout{1:nargout}] = predict(模型,X);else PVPairs = cell(1,nargin-2);如果i = 1:nargin-2 pvairs {1,i} = varargin{i+1};end [varargout{1:nargout}] = predict(model,X,PVPairs{:});结束结束
データセットの一部を使用してSVMモデルに学習をさせ,モデルについてコーダーコンフィギュアラーを作成します。コーダーコンフィギュアラーのプロパティを使用して,SVMモデルパラメーターのコーダー属性を指定します。コ,ダ,コンフィギュアラ,のオブジェクト関数を使用して,新しい予測子データについてラベルを予測する C コードを生成します。その後、データセット全体を使用してモデルに再学習をさせ、コードを再生成せずに、生成されたコードのパラメーターを更新します。
モデルの学習
电离层
デ,タセットを読み込みます。このデタセットには,レダ反射にいての34個の予測子と,不良(“b”
)または良好(‘g’
)という351個の二項反応が含まれています。最初の50個の観測値を使用して,バesc escナリSVM分類モデルに学習をさせます。
负载电离层Mdl = fitcsvm(X(1:50,:),Y(1:50));
Mdl
は,ClassificationSVM
オブジェクトです。
コ,ダ,コンフィギュアラ,の作成
learnerCoderConfigurer
を使用して,ClassificationSVM
モデルに。予測子デ,タX
を指定します。関数learnerCoderConfigurer
は,入力X
を使用して,関数预测
の入力のコ,ダ,属性を設定します。また,生成されるコードが予測ラベルおよびスコアを返すようにするため,出力の個数を2に設定します。
配置器= learnerCoderConfigurer(Mdl,X(1:50,:)),“NumOutputs”2);
配置
は,ClassificationSVM
オブジェクトのコ,ダ,コンフィギュアラ,であるClassificationSVMCoderConfigurer
オブジェクトです。
パラメ,タ,のコ,ダ,属性の指定
生成されたコードのパラメーターをモデルの再学習後に更新できるようにするため,支持向量机分類モデルのパラメーターのコーダー属性を指定します。この例では,生成されたコードに渡す予測子データのコーダー属性と,SVMモデルのサポートベクターのコーダー属性を指定します。
はじめに,生成されたコ,ドが任意の個数の観測値を受け入れるように,X
のコ,ダ,属性を指定します。属性SizeVector
およびVariableDimensions
を変更します。属性SizeVector
は、予測子デ、タのサ、ズの上限を指定し、属性VariableDimensions
は,予測子デ,タの各次元が可変サ。
configuration . x . sizevector = [Inf 34];configuration . x . variabledimensions = [true false];
1番目の次元のサaapl . exeズは,観測値の個数です。このケスでは,サズの上限が正
であり,サ▪▪▪▪▪ズが可変,▪▪▪▪まりX
の観測値の個数が任意であることを指定します。この指定は,コ,ドを生成するときに観測値の個数が不明である場合に便利です。
2番目の次元のサaapl . exeズは,予測子変数の個数です。この値は,機械学習モデルに対し固定でなければなりません。X
には34個の予測子が含まれているので,属性SizeVector
の値は34,属性VariableDimensions
の値は假
でなければなりません。
新しいデータまたは異なる設定を使用してSVMモデルに再学習をさせた場合,サポートベクターの個数が変化する可能性があります。したがって,生成されたコ,ドのサポ,トベクタ,を更新できるように万博1manbetxSupportVectors
のコ,ダ,属性を指定します。
configurati万博1manbetxon . supportvectors . sizevector = [250 34];
Alpha的SizeVector属性已被修改以满足配置约束。SupportVectorLabels的SizeV万博1manbetxector属性已被修改以满足配置约束。
configurati万博1manbetxon . supportvectors . variabledimensions = [true false];
Alpha的VariableDimensions属性已被修改以满足配置约束。已修改SupportVectorLabels的VariableDi万博1manbetxmensions属性以满足配置约束。
万博1manbetxSupportVectors
のコ,ダ,属性が変更されると,α
および万博1manbetxSupportVectorLabels
のコ,ダ,属性が構成の制約を満たすように変更されます。あるパラメーターのコーダー属性の変更によって構成の制約を満たすために他の従属パラメーターの変更が必要になる場合,従属パラメーターのコーダー属性は変更されます。
コ,ドの生成
C / c++コードを生成するには,適切に設定されているC / c++コンパイラにアクセスできなければなりません。MATLAB编码器は,サポ,トされている,ンスト,ラを探して使用します。墨西哥人
设置
を使用すると,既定のコンパ。詳細は,既定のコンパ@ @ラの変更を参照してください。
generateCode
を使用して,svm分類モデル(Mdl
)の関数预测
および更新
にいて,既定の設定でコドを生成します。
generateCode(配置)
generateCode在output文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“ClassificationSVMModel。代码生成成功。
generateCode
は,コ,ドを生成するために必要なmatlabファ,ルを生成します。これには,Mdl
の関数预测
および更新
にそれぞれ対応する2のエントリポント関数predict.m
およびupdate.m
が含まれます。次にgenerateCode
は,2のエントリポClassificationSVMModel
という名前のmex関数をcodegen \墨西哥人\ ClassificationSVMModel
フォルダ,内に作成し,このmex関数を現在のフォルダ,にコピ,します。
生成されたコ,ドの確認
予測子デ,タを渡して,Mdl
の関数预测
とmex関数の関数预测
が同じラベルを返すかどうかを確認します。複数のエントリポイントがある墨西哥人関数内のエントリポイント関数を呼び出すため,1番目の入力引数として関数名を指定します。
[label,score] = predict(Mdl,X);[label_mex,score_mex] = ClassificationSVMModel(“预测”, X);
isequal
を使用して,标签
とlabel_mex
を比較します。
label_mex isequal(标签)
ans =逻辑1
すべての入力が等しい場合,isequal
は逻辑1 (真正的
)を返します。この比較により,同じラベルをMdl
の関数预测
とmex関数の関数预测
が返すことを確認します。
分数
と比較すると,score_mex
には丸めによる差が含まれている場合があります。このような場合は,小さい誤差を許容してscore_mex
と分数
を比較します。
Find (abs(score-score_mex) > 1e-8)
Ans = 0x1空双列向量
この比較により,許容誤差1 e-8
内で分数
とscore_mex
が等しいことを確認します。
モデルの再学習と生成コ,ド内のパラメ,タ,の更新
デ,タセット全体を使用してモデルに再学習をさせます。
retrainedMdl = fitcsvm(X,Y);
validatedUpdateInputs
を使用して,更新するパラメ,タ,を抽出します。この関数は,retrainedMdl
内の修正されたモデルパラメーターを判別し,修正されたパラメーター値がパラメーターのコーダー属性を満たすかどうかを検証します。
params = validatedUpdateInputs(配置器,retrainedMdl);
生成されたコ,ド内のパラメ,タ,を更新します。
ClassificationSVMModel (“更新”params)
生成されたコ,ドの確認
retrainedMdl
の関数预测
の出力と,更新したmex関数の関数预测
の出力を比較します。
[label,score] = predict(retrainedMdl,X);[label_mex,score_mex] = ClassificationSVMModel(“预测”, X);label_mex isequal(标签)
ans =逻辑1
Find (abs(score-score_mex) > 1e-8)
Ans = 0x1空双列向量
この比較により,标签
とlabels_mex
が等しく,スコアの値が許容誤差内で等しいことを確認します。
Mdl
- - - - - -機械学習モデル機械学習モデル。完全またはコンパクトなモデルオブジェクトを指定します。サポ,トされるモデルは次の表に記載されています。
モデル | 完全/コンパクトなモデルオブジェクト | 学習関数 |
---|---|---|
マルチクラス分類用の二分決定木 | ClassificationTree ,CompactClassificationTree |
fitctree |
1クラスおよびバesc支持向量机ナリ分類用の | ClassificationSVM ,CompactClassificationSVM |
fitcsvm |
バ@ @ナリ分類用の線形モデル | ClassificationLinear |
fitclinear |
支持向量机モデルおよび線形モデル用のマルチクラスモデル | ClassificationECOC ,CompactClassificationECOC |
fitcecoc |
回帰用の二分決定木 | RegressionTree ,CompactRegressionTree |
fitrtree |
サポ,トベクタ,マシン(svm)回帰 | RegressionSVM ,CompactRegressionSVM |
fitrsvm |
線形回帰 | RegressionLinear |
fitrlinear |
機械学習モデルのコード生成に関する使用上の注意および制限については,モデルオブジェクトのページの”コード生成“セクションを参照してください。
X
- - - - - -予測子デ,タMdl
の関数预测
の予測子デ,タ。n行 p 列の数値行列を指定します。n は観測値の個数、p は予測子変数の個数です。代わりにX
を観測値が列に対応するp行n列の行列として指定するには,名前と値のペアの引数“ObservationsIn”
を“列”
に設定します。このオプションが利用できるのは,線形バaaplナリ学習器を含む線形モデルとecocモデルのみです。
機械学習モデルの関数预测
は,分類の場合はラベルを,回帰の場合は応答を,与えられた予測子デ,タに対して予測します。コダコンフィギュアラ配置
の作成後,関数generateCode
を使用してMdl
の関数预测
に対するc / c++コドを生成できます。生成されるコ,ドは,X
と同じサズおよびデタ型の予測子デタを受け入れます。配置
の作成後,各次元のサ。
100年たとえば個の観測値と3つの予測子変数を使用してラベルを予測するC / c++コードを生成する場合,X
として0 (100 3)
を指定します。関数learnerCoderConfigurer
は,X
の値ではなく,サ。したがってX
は,特定のデタ型をも一連の値を表すmatlab式または予測子デタにすることができます。出力配置
には,配置
のX
プロパティ内のX
のサ▪▪ズおよびデ▪▪タ型が格納されます。配置
の作成後,X
のサ▪▪ズおよびデ▪▪タ型を変更できます。たとえば,観測値の個数を 200 に、データ型を单
に変更します。
configuration . x . sizevector = [200 3];configurer.X.DataType =“单一”;
生成されるC / c++コードが,最大100個の観測値がある予測子データを受け入れるようにするには,X
として0 (100 3)
を指定し,VariableDimensions
プロパティを変更します。
configuration . x . variabledimensions = [10];
[1 0]
は,X
の1番目の次元(観測値の個数)が可変サX
の2番目の次元(予測子変数の個数)が固定サesc escズであることを示します。指定した観測値の個数(この例では100)は,生成されるC / c++コードで許容される観測値の最大数になります。任意の個数の観測値を可能にするには,上限として正
を指定します。configuration . x . sizevector = [Inf 3];
デ,タ型:单
|双
オプションの名称,值
引数のコンマ区切りペアを指定します。的名字
は引数名で,价值
は対応する値です。的名字
は引用符で囲まなければなりません。Name1, Value1,…,的家
のように,複数の名前と値のペアの引数を,任意の順番で指定できます。
configurer = learnerCoderConfigurer(Mdl,X,'NumOutputs',2,'OutputFileName','myModel')
は,预测
の出力の個数を2に設定し,生成されるc / c++コドのファル名として“myModel”
を指定します。
NumOutputs
- - - - - -预测
の出力の個数機械学習モデルMdl
の関数预测
の出力引数の個数。“NumOutputs”
と正の整数n
から構成されるコンマ区切りのペアとして指定します。
次の表は,各種のモデルにおける関数预测
の出力の一覧です。生成されるc / c++コドの预测
は,“出力”列に示されている順序で関数预测
の最初のn
個の出力を返します。
モデル | モデルの関数预测 |
出力 |
---|---|---|
マルチクラス分類用の二分決定木 | 预测 |
标签 (予測クラスラベル),分数 (事後確率)、节点 (予測クラスのノ,ド数),cnum (予測ラベルのクラス数) |
1クラスおよびバesc支持向量机ナリ分類用の | 预测 |
标签 (予測されたクラスラベル),分数 (スコアまたは事後確率) |
バ@ @ナリ分類用の線形モデル | 预测 |
标签 (予測されたクラスラベル),分数 (分類スコア) |
支持向量机モデルおよび線形モデル用のマルチクラスモデル | 预测 |
标签 (予測されたクラスラベル),NegLoss (符号を反転した平均バaapl .ナリ損失),PBScore (正のクラススコア) |
回帰用の二分決定木 | 预测 |
Yfit (予測された応答),节点 (予測のノ,ド数) |
支持向量机回帰 | 预测 |
yfit (予測された応答) |
線形回帰 | 预测 |
YHat (予測された応答) |
たとえば,svm分類モデルに対して“NumOutputs”,1
を指定した場合,预测
は生成されたc / c++コドで予測クラスラベルを返します。
コダコンフィギュアラ配置
を作成した後で,ドット表記を使用して出力の個数を変更できます。
配置。NumOutputs= 2;
名前と値のペアの引数“NumOutputs”
は,codegen
(MATLAB编码器)のコンパ@ @ラオプション“-nargout”
と等価です。このオプションは,コ,ド生成のエントリポ,ント関数における出力引数の個数を指定します。コ,ダ,コンフィギュアラ,のオブジェクト関数generateCode
は,Mdl
の関数预测
および更新
に対してpredict.m
およびupdate.m
という2つのエントリポイント関数をそれぞれ生成し,この2つのエントリポイント関数に対してC / c++コードを生成します。“NumOutputs”
にいて指定した値は,predict.m
の出力引数の個数に対応します。
例:“NumOutputs”,2
デ,タ型:单
|双
OutputFileName
- - - - - -生成されるc / c++コドのファル名Mdl
オブジェクト名+“模型”
(既定値) |文字ベクトル|字符串スカラ生成されるc / c++コドのファル名。“OutputFileName”
と文字ベクトルまたは字符串スカラ,から構成されるコンマ区切りのペアとして指定します。
コ,ダ,コンフィギュアラ,のオブジェクト関数generateCode
c / c++コドを生成します。
オペレーティングシステムの構成によってはコード生成に失敗する可能性があるので,ファイル名には空白を含めないでください。また,名前は有効なmatlab関数名でなければなりません。
既定のファ电子邮箱ル名は,Mdl
のオブジェクト名に“模型”
を追加した名前です。たとえば,Mdl
がCompactClassificationSVM
またはClassificationSVM
オブジェクトである場合,既定の名前は“ClassificationSVMModel”
です。
コダコンフィギュアラ配置
を作成した後で,ドット表記を使用してファ。
配置。OutputFileName =“myModel”;
例:“OutputFileName”、“myModel”
デ,タ型:字符
|字符串
详细的
- - - - - -詳細レベル真正的
(逻辑1)(既定値) |假
(逻辑0)詳細レベル。“详细”
と真正的
(逻辑1)または假
(逻辑0)のいずれかから構成されるコンマ区切りのペアとして指定します。詳細レベルは,コマンドランにおけるコダコンフィギュアラ配置
に関する通知メッセ,ジの表示を制御します。
値 | 説明 |
---|---|
真正的 (逻辑1) |
パラメーターのコーダー属性に対する変更によって他の従属するパラメーターが変化する場合,通知メッセージが表示されます。 |
假 (逻辑0) |
通知メッセ,ジは表示されません。 |
生成コード内の機械学習のモデルパラメーターを更新できるようにするには,コード生成の前にパラメーターのコーダー属性を構成する必要があります。パラメ,タ,のコ,ダ,属性は互いに依存するので,依存関係が構成の制約として保存されます。コダコンフィギュアラを使用してパラメーターのコーダー属性を変更するときに、構成の制約を満たすために他の従属するパラメーターも変更する必要がある場合、従属するパラメーターのコーダー属性が変更されます。詳細レベルは、これらの引き続いて起きた変更についてメッセージを表示するかどうかを決定します。
コダコンフィギュアラ配置
を作成した後で,ドット表記を使用して詳細レベルを変更できます。
配置。详细的= false;
例:“详细”,假的
デ,タ型:逻辑
ObservationsIn
- - - - - -予測子デ,タにおける観測値の次元“行”
(既定値) |“列”
予測子デ,タにおける観測値の次元。“ObservationsIn”
と,“行”
または“列”
のいずれかから構成されるコンマ区切りのペアとして指定します。“ObservationsIn”
を“列”
に設定すると,観測値が列に対応するように予測子デ,タX
の方向を設定しなければなりません。
メモ
“列”
オプションが利用できるのは,線形バaaplナリ学習器を含む線形モデルとecocモデルのみです。
例:“ObservationsIn”、“列”
配置
—コダコンフィギュアラ機械学習モデルのコ,ダ,コンフィギュアラ,オブジェクト。次の表のいずれかのコ,ダ,コンフィギュアラ,オブジェクトとして返されます。
モデル | コ,ダ,コンフィギュアラ,オブジェクト |
---|---|
マルチクラス分類用の二分決定木 | ClassificationTreeCoderConfigurer |
1クラスおよびバesc支持向量机ナリ分類用の | ClassificationSVMCoderConfigurer |
バ@ @ナリ分類用の線形モデル | ClassificationLinearCoderConfigurer |
支持向量机モデルおよび線形モデル用のマルチクラスモデル | ClassificationECOCCoderConfigurer |
回帰用の二分決定木 | RegressionTreeCoderConfigurer |
サポ,トベクタ,マシン(svm)回帰 | RegressionSVMCoderConfigurer |
線形回帰 | RegressionLinearCoderConfigurer |
コーダーコンフィギュアラーオブジェクトのプロパティとオブジェクト関数を使用することにより,コード生成オプションを設定し,機械学習モデルの関数预测
および更新
に対するc / c++コドを生成します。
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。