このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
コード生成用にモデル パラメーターを更新
コーダー コンフィギュアラー オブジェクトを使用して、機械学習モデルの関数预测
および使现代化
に対する C/C++コードを生成します。LearnerCoder配置器
およびそのオブジェクト関数生成代码
を使用してこのオブジェクトを作成します。これにより、生成されたコードのモデル パラメーターは、コードの再生成を必要としない、関数使现代化
を使用した更新が可能になります。この機能により,新しいデータや設定でモデルに再学習をさせるときに,C / c++コードの再生成,再展開および再確認に必要な作業が低減されます。
次のフロー チャートは、コーダー コンフィギュアラーを使用するコード生成のワークフローを示します。強調表示されているステップで使现代化
を使用します。
コードを生成しない場合、関数使现代化
を使用する必要はありません。MATLAB®でモデルに再学習をさせると、返されるモデルには修正されたパラメーターが既に含まれています。
データセットの一部を使用して 支持向量机モデルに学習をさせ、モデルについてコーダー コンフィギュアラーを作成します。コーダー コンフィギュアラーのプロパティを使用して、支持向量机モデル パラメーターのコーダー属性を指定します。コーダー コンフィギュアラーのオブジェクト関数を使用して、新しい予測子データについてラベルを予測する Cコードを生成します。その後、データセット全体を使用してモデルに再学習をさせ、コードを再生成せずに、生成されたコードのパラメーターを更新します。
モデルの学習
电离层
データセットを読み込みます。このデータセットには、レーダー反射についての 34個の予測子と、不良 (“b”
) または良好 (“g”
) という 351個の二項反応が含まれています。最初の 50個の観測値を使用して、バイナリ 支持向量机分類モデルに学習をさせます。
负载电离层Mdl=fitcsvm(X(1:50,:),Y(1:50));
Mdl
は,分类VM
オブジェクトです。
コーダー コンフィギュアラーの作成
LearnerCoder配置器
を使用して、分类VM
モデルについてコーダー コンフィギュアラーを作成します。予測子データX
を指定します。関数LearnerCoder配置器
は、入力X
を使用して,関数预测
の入力のコーダー属性を設定します。また、生成されるコードが予測ラベルおよびスコアを返すようにするため、出力の個数を 2.に設定します。
configurer=learnercoderconfiguer(Mdl,X(1:50,:),“NumOutputs”,2);
配置器
は,分类VM
オブジェクトのコーダー コンフィギュアラーである分类VMCoderConfiguration
オブジェクトです。
パラメーターのコーダー属性の指定
生成されたコードのパラメーターをモデルの再学習後に更新できるようにするため、支持向量机分類モデルのパラメーターのコーダー属性を指定します。この例では、生成されたコードに渡す予測子データのコーダー属性と、支持向量机モデルのサポート ベクターのコーダー属性を指定します。
はじめに,生成されたコードが任意の個数の観測値を受け入れるように,X
のコーダー属性を指定します。属性SizeVector
および可变尺寸
を変更します。属性SizeVector
は、予測子データのサイズの上限を指定し、属性可变尺寸
は、予測子データの各次元が可変サイズと固定サイズのどちらであるかを指定します。
configuration . x . sizevector = [Inf 34];configurer.X.VariableDimensions = [true false];
1番目の次元のサイズは,観測値の個数です。このケースでは,サイズの上限がInf
であり、サイズが可変、つまりX
の観測値の個数が任意であることを指定します。この指定は、コードを生成するときに観測値の個数が不明である場合に便利です。
2番目の次元のサイズは,予測子変数の個数です。この値は,機械学習モデルに対し固定でなければなりません。X
には 34個の予測子が含まれているので、属性SizeVector
の値は34岁属性可变尺寸
の値は错误的
でなければなりません。
新しいデータまたは異なる設定を使用して 支持向量机モデルに再学習をさせた場合、サポート ベクターの個数が変化する可能性があります。したがって、生成されたコードのサポート ベクターを更新できるように万博1manbetx支持向量
のコーダー属性を指定します。
configurer.万博1manbetxSupportVectors.SizeVector=[250 34];
Alpha的SizeVector属性已修改为满足配置约束。SupportVectorLabels的SizeVector属性已修改为满足配置约束。万博1manbetx
configurer.万博1manbetxSupportVectors.VariableDimensions=[true-false];
已修改Alpha的VariableDimensions属性以满足配置约束。修改了SupportVectorLabels的VariableDi万博1manbetxmensions属性以满足配置约束。
万博1manbetx支持向量
のコーダー属性が変更されると、阿尔法
および万博1manbetxSupportVectorLabels
のコーダー属性が構成の制約を満たすように変更されます。あるパラメーターのコーダー属性の変更によって構成の制約を満たすために他の従属パラメーターの変更が必要になる場合,従属パラメーターのコーダー属性は変更されます。
コードの生成
C / c++コードを生成するには,適切に設定されているC / c++コンパイラにアクセスできなければなりません。MATLAB编码器は,サポートされているインストール済みのコンパイラを探して使用します。墨西哥人
设置
を使用すると,既定のコンパイラを表示および変更できます。詳細は,既定のコンパイラの変更を参照してください。
生成代码
を使用して、支持向量机分類モデル (Mdl
) の関数预测
および使现代化
について、既定の設定でコードを生成します。
生成代码(配置器)
generateCode在输出文件夹中创建这些文件:“initialize.m”、“predict.m”、“update.m”、“ClassificationSVMModel.mat”代码生成成功。
生成代码
は、コードを生成するために必要な MATLABファイルを生成します。これには、Mdl
の関数预测
および使现代化
にそれぞれ対応する 2.つのエントリポイント関数预测
および更新.m
が含まれます。次に生成代码
は2つのエントリポイント関数に対して分类模型
という名前の墨西哥人関数をcodegen\mex\ClassificationSVMModel
フォルダー内に作成し、この 墨西哥関数を現在のフォルダーにコピーします。
生成されたコードの確認
予測子データを渡して、Mdl
の関数预测
と 墨西哥関数の関数预测
が同じラベルを返すかどうかを確認します。複数のエントリポイントがある墨西哥人関数内のエントリポイント関数を呼び出すため,1番目の入力引数として関数名を指定します。
[label,score]=预测(Mdl,X);[label_-mex,score_-mex]=分类VMModel(“预测”,X);
等质量
を使用して、标签
とlabel_mex
を比較します。
isequal(标签,标签)
ans=必然的1.
すべての入力が等しい場合、等质量
は 逻辑1(真正的
) を返します。この比較により、同じラベルをMdl
の関数预测
と 墨西哥関数の関数预测
が返すことを確認します。
分数
と比較すると、得分
には丸めによる差が含まれている場合があります。このような場合は、小さい誤差を許容して得分
と分数
を比較します。
查找(abs(分数-分数-平均值)>1e-8)
ans=0x1空双列向量
この比較により、許容誤差1e–8
内で分数
と得分
が等しいことを確認します。
モデルの再学習と生成コード内のパラメーターの更新
データセット全体を使用してモデルに再学習をさせます。
再培训DMDL=fitcsvm(X,Y);
validatedUpdateInputs
を使用して、更新するパラメーターを抽出します。この関数は、retrainedMdl
内の修正されたモデルパラメーターを判別し,修正されたパラメーター値がパラメーターのコーダー属性を満たすかどうかを検証します。
params = validatedUpdateInputs(配置、retrainedMdl);
生成されたコード内のパラメーターを更新します。
分类模型(“更新”,参数)
生成されたコードの確認
retrainedMdl
の関数预测
の出力と、更新した 墨西哥関数の関数预测
の出力を比較します。
(标签,分数)=预测(retrainedMdl X);[label_mex, score_mex] = ClassificationSVMModel (“预测”,X);isequal(标签,标签)
ans=必然的1.
查找(abs(分数-分数-平均值)>1e-8)
ans=0x1空双列向量
この比較により,标签
と标签
が等しく,スコアの値が許容誤差内で等しいことを確認します。
支持向量机バイナリ学習器を使用する誤り訂正出力符号 (经济合作委员会)モデルに学習をさせ、このモデルのコーダー コンフィギュアラーを作成します。コーダー コンフィギュアラーのプロパティを使用して、经济合作モデルのパラメーターのコーダー属性を指定します。コーダー コンフィギュアラーのオブジェクト関数を使用して、新しい予測子データについてラベルを予測する Cコードを生成します。その後、異なる設定を使用してモデルに再学習をさせ、コードを再生成せずに、生成されたコードのパラメーターを更新します。
モデルの学習
フィッシャーのアヤメのデータセットを読み込みます。
负载fisheririsX=平均值;Y=物种;
ガウス カーネル関数を使用し、予測子データを標準化する、支持向量机バイナリ学習器テンプレートを作成します。
t=模板SVM(“KernelFunction”,“高斯”,“标准化”,对);
テンプレートT
を使用して、マルチクラス 经济合作モデルに学習をさせます。
Mdl = fitcecoc (X, Y,“学习者”,t);
Mdl
は,分类
オブジェクトです。
コーダー コンフィギュアラーの作成
LearnerCoder配置器
を使用して、分类
モデルについてコーダー コンフィギュアラーを作成します。予測子データX
を指定します。関数LearnerCoder配置器
は、入力X
を使用して,関数预测
の入力のコーダー属性を設定します。また、出力の個数を 2.に設定して、生成されるコードが関数预测
の最初の 2.つの出力 (予測されたラベルと符号を反転した平均バイナリ損失) を返すようにします。
configurer=learnerCoderConfigurer(Mdl,X,“NumOutputs”,2)
configurer=ClassificationeCoderConfigurer with properties:更新输入:BinaryLearners:[1x1 ClassificationVMCoderConfigurer]Previor:[1x1 LearnerCoderInput]成本:[1x1 LearnerCoderInput]预测输入:X:[1x1 LearnerCoderInput]代码生成参数:numoutput:2输出文件名:“ClassificationeCodel”属性、方法
配置器
は,分类
オブジェクトのコーダー コンフィギュアラーである分类代码配置器
オブジェクトです。表示には、预测
と使现代化
の調整可能な入力引数X
、BinaryLearners
、之前
および费用
が示されています。
パラメーターのコーダー属性の指定
预测
の引数(予測子データと名前と値のペアの引数“解码”
および“BinaryLoss”
)と使现代化
の引数(SVM学習器のサポートベクター)のコーダー属性を指定して,生成されるコードでこれらの引数を预测
と使现代化
の入力引数として使用できるようにします。
はじめに,生成されたコードが任意の個数の観測値を受け入れるように,X
のコーダー属性を指定します。属性SizeVector
および可变尺寸
を変更します。属性SizeVector
は、予測子データのサイズの上限を指定し、属性可变尺寸
は、予測子データの各次元が可変サイズと固定サイズのどちらであるかを指定します。
configurer.X.SizeVector=[Inf 4];configurer.X.VariableDimensions=[true-false];
1番目の次元のサイズは,観測値の個数です。このケースでは,サイズの上限がInf
であり、サイズが可変、つまりX
の観測値の個数が任意であることを指定します。この指定は、コードを生成するときに観測値の個数が不明である場合に便利です。
2.番目の次元のサイズは、予測子変数の個数です。この値は、機械学習モデルに対して固定しなければなりません。X
には 4.つの予測子が含まれているので、SizeVector
属性の2番目の値は4,可变尺寸
属性の 2.番目の値は错误的
でなければなりません。
次に,生成されるコードで名前と値のペアの引数“BinaryLoss”
および“解码”
を使用するように、双星
と解码
のコーダー属性を変更します。双星
のコーダー属性を表示します。
configurer.BinaryLoss
ans=EnumeratedInput,属性为:值:“铰链”SelectedOption:“内置”内置选项:{1x7单元}IsConstant:1可调性:0
生成されるコードで既定以外の値を使用するには、コードを生成する前に値を指定しなければなりません。双星
の价值
属性として“指数型”
を指定します。
configurer.BinaryLoss.Value=“指数型”;configurer.BinaryLoss
ans=EnumeratedInput,属性为:Value:'exponential'SelectedOption:'Buildin'内置选项:{1x7 cell}IsConstant:1可调性:1
可调性
が错误的
(逻辑0)である場合に属性値を変更すると、可调性
は真正的
(逻辑1)に設定されます。
解码
のコーダー属性を表示します。
配置器.解码
ans=EnumeratedInput,属性为:Value:'LossWighted'SelectedOption:'Buildin'内置选项:{'LossWighted''lossbased'}IsConstant:1可调性:0
生成されるコードでBuiltInOptions
の利用可能なすべての値を使用できるようにするため,解码
の司仪
属性として错误的
を指定します。
configurer.Decoding.IsConstant=false;configurer.Decoding
ans=带属性的EnumeratedInput:值:[1x1 LearnerCoderInput]SelectedOption:'Nonctant'内置选项:{'LossWighted''lossbased'}IsConstant:0可调性:1
解码
の价值
属性が学习者输入
オブジェクトに変更されるので、“迷失方向”
と“lossbased
' の両方を“解码”
の値として使用できます。また、选择选项
が“非常数的”
に、可调性
が真正的
に設定されます。
最後に、BinaryLearners
の万博1manbetx支持向量
のコーダー属性を変更します。万博1manbetx支持向量
のコーダー属性を表示します。
configurer.BinaryLearners.万博1manbetxSupportVectors
ans=LearnerCoderInput,属性为:SizeVector:[54 4]VariableDimensions:[1 0]数据类型:“double”可调性:1
各学習器でサポート ベクターの個数が異なるので、可变尺寸
の既定値は[真假]
です。新しいデータまたは異なる設定を使用して 经济合作モデルに再学習をさせた場合、支持向量机学習器のサポート ベクターの個数が変化する可能性があります。したがって、サポート ベクターの個数の上限を増やします。
configurer.BinaryLearners.万博1manbetxSupportVectors.SizeVector = [150 4];
Alpha的SizeVector属性已修改为满足配置约束。SupportVectorLabels的SizeVector属性已修改为满足配置约束。万博1manbetx
万博1manbetx支持向量
のコーダー属性が変更されると、阿尔法
および万博1manbetxSupportVectorLabels
のコーダー属性が構成の制約を満たすように変更されます。あるパラメーターのコーダー属性の変更によって構成の制約を満たすために他の従属パラメーターの変更が必要になる場合,従属パラメーターのコーダー属性は変更されます。
コーダー コンフィギュアラーを表示します。
配置器
configurer=ClassificationeCoderConfiger with properties:更新输入:BinaryLearners:[1x1 ClassificationsVMCoderConfigure]Previor:[1x1 LearnerCoderInput]成本:[1x1 LearnerCoderInput]预测输入:X:[1x1 LearnerCoderInput]BinaryLoss:[1x1 EnumeratedInput]解码:[1x1 EnumeratedInput]代码生成参数:NumOutputs:2 OutputFileName:“ClassificationeComModel”属性、方法
双星
と解码
も表示に含まれるようになりました。
コードの生成
C / c++コードを生成するには,適切に設定されているC / c++コンパイラにアクセスできなければなりません。MATLAB编码器は,サポートされているインストール済みのコンパイラを探して使用します。墨西哥人
设置
を使用すると,既定のコンパイラを表示および変更できます。詳細は,既定のコンパイラの変更を参照してください。
经济合作分類モデル (Mdl
) の関数预测
および使现代化
のコードを生成します。
生成代码(配置器)
generateCode在输出文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“ClassificationECOCModel。代码生成成功。
関数生成代码
は,以下の処理を実行します。
コードを生成するために必要なMATLABファイルを生成する。これには,Mdl
の関数预测
および使现代化
にそれぞれ対応する 2.つのエントリポイント関数预测
および更新.m
が含まれます。
2.つのエントリポイント関数に対して、分类模型
という名前の 墨西哥関数を作成する。
墨西哥人関数のコードをcodegen\mex\ClassificationeCOModel
フォルダーに作成する。
墨西哥関数を現在のフォルダーにコピーする。
生成されたコードの確認
予測子データを渡して、Mdl
の関数预测
と 墨西哥関数の関数预测
が同じラベルを返すかどうかを確認します。複数のエントリポイントがある 墨西哥関数内のエントリポイント関数を呼び出すため、1.番目の入力引数として関数名を指定します。コードを生成する前に司仪
属性を変更して“解码”
を調整可能な入力引数として指定したので、“迷失方向”
は“解码”
の既定値ですが、墨西哥関数を呼び出すときにも同じ指定を行う必要があります。
[label,NegLoss]=预测(Mdl,X,“BinaryLoss”,“指数型”);[label_-mex,NegLoss_-mex]=分类模型(“预测”,X,“BinaryLoss”,“指数型”,“解码”,“迷失方向”);
等质量
を使用して、标签
とlabel_mex
を比較します。
isequal(标签,标签)
ans=必然的1.
すべての入力が等しい場合、等质量
は 逻辑1(真正的
) を返します。この比較により、同じラベルをMdl
の関数预测
と 墨西哥関数の関数预测
が返すことを確認します。
内格罗斯
と比較すると、NegLoss_mex
には丸めによる差が含まれている可能性があります。このケースでは、小さい誤差を許容してNegLoss_mex
と内格罗斯
を比較します。
查找(abs(NegLoss-NegLoss_mex)>1e-8)
ans=0x1空双列向量
この比較により、許容誤差1e–8
内で内格罗斯
とNegLoss_mex
が等しいことを確認します。
モデルの再学習と生成コード内のパラメーターの更新
異なる設定を使用してモデルに再学習をさせます。ヒューリスティック手法を使用して適切なスケール係数が選択されるようにするため、“内核尺度”
として“自动”
を指定します。
t_new=模板SVM(“KernelFunction”,“高斯”,“标准化”,真的,“内核尺度”,“自动”);再培训DMDL=fitcecoc(X,Y,“学习者”(t_new),;
validatedUpdateInputs
を使用して、更新するパラメーターを抽出します。この関数は、retrainedMdl
内の修正されたモデルパラメーターを判別し,修正されたパラメーター値がパラメーターのコーダー属性を満たすかどうかを検証します。
params = validatedUpdateInputs(配置、retrainedMdl);
生成されたコード内のパラメーターを更新します。
ClassificationECOCModel (“更新”,参数)
生成されたコードの確認
retrainedMdl
の関数预测
の出力と、更新した 墨西哥関数の関数预测
の出力を比較します。
[label,NegLoss]=预测(重新训练的DMDL,X,“BinaryLoss”,“指数型”,“解码”,“损失基础”);[label_-mex,NegLoss_-mex]=分类模型(“预测”,X,“BinaryLoss”,“指数型”,“解码”,“损失基础”);isequal(标签,标签)
ans=必然的1.
查找(abs(NegLoss-NegLoss_mex)>1e-8)
ans=0x1空双列向量
この比較により,标签
とlabel_mex
が等しく、内格罗斯
とNegLoss_mex
が許容誤差内で等しいことが確認されます。
データセットの一部を使用してサポート ベクター マシン (支持向量机)モデルに学習をさせ、モデルについてコーダー コンフィギュアラーを作成します。コーダー コンフィギュアラーのプロパティを使用して、支持向量机モデル パラメーターのコーダー属性を指定します。コーダー コンフィギュアラーのオブジェクト関数を使用して、新しい予測子データについて応答を予測する Cコードを生成します。その後、データセット全体を使用してモデルに再学習をさせ、コードを再生成せずに、生成されたコードのパラメーターを更新します。
モデルの学習
carsmall
データセットを読み込み,最初の50個の観測値を使用してSVM回帰モデルに学習をさせます。
负载carsmallX=马力,重量;Y=每加仑;Mdl=fitrsvm(X(1:50,:),Y(1:50));
Mdl
は,回归
オブジェクトです。
コーダー コンフィギュアラーの作成
LearnerCoder配置器
を使用して、回归
モデルについてコーダー コンフィギュアラーを作成します。予測子データX
を指定します。関数LearnerCoder配置器
は、入力X
を使用して,関数预测
の入力のコーダー属性を設定します。
配置= learnerCoderConfigurer (Mdl X (1:50,:));
配置器
は,回归
オブジェクトのコーダー コンフィギュアラーであるRegressionSVMCoderConfigurer
オブジェクトです。
パラメーターのコーダー属性の指定
生成されたコードのパラメーターをモデルの再学習後に更新できるようにするため、支持向量机回帰モデルのパラメーターのコーダー属性を指定します。この例では、生成されたコードに渡す予測子データのコーダー属性と、支持向量机回帰モデルのサポート ベクターのコーダー属性を指定します。
はじめに,生成されたコードが任意の個数の観測値を受け入れるように,X
のコーダー属性を指定します。属性SizeVector
および可变尺寸
を変更します。属性SizeVector
は、予測子データのサイズの上限を指定し、属性可变尺寸
は、予測子データの各次元が可変サイズと固定サイズのどちらであるかを指定します。
configurer.X.SizeVector=[Inf 2];configurer.X.VariableDimensions=[true-false];
1番目の次元のサイズは,観測値の個数です。このケースでは,サイズの上限がInf
であり、サイズが可変、つまりX
の観測値の個数が任意であることを指定します。この指定は、コードを生成するときに観測値の個数が不明である場合に便利です。
2番目の次元のサイズは,予測子変数の個数です。この値は,機械学習モデルに対し固定でなければなりません。X
には 2.つの予測子が含まれているので、属性SizeVector
の値は2,属性可变尺寸
の値は错误的
でなければなりません。
新しいデータまたは異なる設定を使用して 支持向量机モデルに再学習をさせた場合、サポート ベクターの個数が変化する可能性があります。したがって、生成されたコードのサポート ベクターを更新できるように万博1manbetx支持向量
のコーダー属性を指定します。
configurer.万博1manbetxSupportVectors.SizeVector=[250 2];
Alpha的SizeVector属性已修改以满足配置约束。
configurer.万博1manbetxSupportVectors.VariableDimensions=[true-false];
已修改Alpha的VariableDimensions属性以满足配置约束。
万博1manbetx支持向量
のコーダー属性が変更されると、阿尔法
のコーダー属性が構成の制約を満たすように変更されます。あるパラメーターのコーダー属性の変更によって構成の制約を満たすために他の従属パラメーターの変更が必要になる場合,従属パラメーターのコーダー属性は変更されます。
コードの生成
C / c++コードを生成するには,適切に設定されているC / c++コンパイラにアクセスできなければなりません。MATLAB编码器は,サポートされているインストール済みのコンパイラを探して使用します。墨西哥人
设置
を使用すると,既定のコンパイラを表示および変更できます。詳細は,既定のコンパイラの変更を参照してください。
生成代码
を使用して、支持向量机回帰モデル (Mdl
) の関数预测
および使现代化
について、既定の設定でコードを生成します。
生成代码(配置器)
generateCode在输出文件夹中创建这些文件:“initialize.m”、“predict.m”、“update.m”、“RegressionSVMModel.mat”代码生成成功。
生成代码
は、コードを生成するために必要な MATLABファイルを生成します。これには、Mdl
の関数预测
および使现代化
にそれぞれ対応する 2.つのエントリポイント関数预测
および更新.m
が含まれます。次に生成代码
は2つのエントリポイント関数に対してRegressionSVMModel
という名前の墨西哥人関数をcodegen \墨西哥人\ RegressionSVMModel
フォルダー内に作成し、この 墨西哥関数を現在のフォルダーにコピーします。
生成されたコードの確認
予測子データを渡して、Mdl
の関数预测
と 墨西哥関数の関数预测
が同じ予測応答を返すかどうかを確認します。複数のエントリポイントがある 墨西哥関数内のエントリポイント関数を呼び出すため、1.番目の入力引数として関数名を指定します。
yfit=预测(Mdl,X);yfit_mex=回归模型(“预测”,X);
伊菲特
と比較すると、yfit_mex
には丸めによる差が含まれている場合があります。このような場合は、小さい誤差を許容して伊菲特
とyfit_mex
を比較します。
查找(abs(yfit-yfit_mex)>1e-6)
ans=0x1空双列向量
この比較により、許容誤差1e–6
内で伊菲特
とyfit_mex
が等しいことを確認します。
モデルの再学習と生成コード内のパラメーターの更新
データセット全体を使用してモデルに再学習をさせます。
retrainedMdl = fitrsvm (X, Y);
validatedUpdateInputs
を使用して、更新するパラメーターを抽出します。この関数は、retrainedMdl
内の修正されたモデルパラメーターを判別し,修正されたパラメーター値がパラメーターのコーダー属性を満たすかどうかを検証します。
params = validatedUpdateInputs(配置、retrainedMdl);
生成されたコード内のパラメーターを更新します。
回归模型(“更新”,参数)
生成されたコードの確認
retrainedMdl
の関数预测
の出力と、更新した 墨西哥関数の関数预测
の出力を比較します。
yfit=预测(再培训DMDL,X);yfit\u mex=回归VMModel(“预测”,X);查找(abs(yfit-yfit_-mex)>1e-6)
ans=0x1空双列向量
この比較により、許容誤差1e-6
内で伊菲特
とyfit_mex
が等しいことを確認します。
データセットの一部を使用して回帰木に学習させ、モデルについてコーダー コンフィギュアラーを作成します。コーダー コンフィギュアラーのプロパティを使用してモデル パラメーターのコーダー属性を指定します。コーダー コンフィギュアラーのオブジェクト関数を使用して、新しい予測子データについて応答を予測する Cコードを生成します。その後、データセット全体を使用してモデルに再学習をさせ、コードを再生成せずに、生成されたコードのパラメーターを更新します。
モデルの学習
卡比格
データセットを読み込み、観測値の半分を使用して回帰木モデルに学習させます。
负载卡比格X=[排量马力重量];Y=MPG;rng(“默认”)%为了再现性n =长度(Y);idxTrain = randsample (n, n / 2);XTrain = X (idxTrain:);YTrain = Y (idxTrain);Mdl = fitrtree (XTrain YTrain);
Mdl
は,回归树
オブジェクトです。
コーダー コンフィギュアラーの作成
LearnerCoder配置器
を使用して、回归树
モデルについてコーダー コンフィギュアラーを作成します。予測子データXTrain
を指定します。関数LearnerCoder配置器
は、入力XTrain
を使用して,関数预测
の入力のコーダー属性を設定します。また,生成されるコードが予測される応答および予測子のノード数を返すようにするため,出力の個数を2に設定します。
configurer=learnercoderconfiguer(Mdl、XTrain、,“NumOutputs”,2);
配置器
は,回归树
オブジェクトのコーダー コンフィギュアラーであるRegressionTreeCoderConfigurer
オブジェクトです。
パラメーターのコーダー属性の指定
生成されたコードのパラメーターをモデルの再学習後に更新できるようにするため、回帰木モデルのパラメーターのコーダー属性を指定します。
生成されたコードが任意の個数の観測値を受け入れるように、配置器
のX
プロパティのコーダー属性を指定します。属性SizeVector
および可变尺寸
を変更します。属性SizeVector
は、予測子データのサイズの上限を指定し、属性可变尺寸
は、予測子データの各次元が可変サイズと固定サイズのどちらであるかを指定します。
configurer.X.SizeVector=[Inf 3];configurer.X.VariableDimensions
ans=1 x2逻辑阵列1 0
1.番目の次元のサイズは、観測値の個数です。属性SizeVector
の値をInf
に設定すると、ソフトウェアは属性可变尺寸
の値を1.
に変更します。言い換えると、サイズの上限はInf
であり、サイズは可変です。これは、予測子データが任意の数の観測値をもつことができることを意味しています。この指定は、コードを生成するときに観測値の個数が不明である場合に便利です。
2番目の次元のサイズは,予測子変数の個数です。この値は1つの機械学習モデルに対して固定でなければなりません。予測子データには3個の予測子が含まれているため,属性SizeVector
の値は3.
、属性可变尺寸
の値は0
でなければなりません。
新しいデータまたは異なる設定を使用して木モデルに再学習させる場合,木のノードの数が変化する可能性があります。したがって,生成されたコードでノードの数を更新できるように,儿童
、切点
、切割预测指数
または诺德米安
のいずれかのプロパティのSizeVector
属性の最初の次元を指定します。そうすると、他のプロパティは自動的に変更されます。
たとえば、诺德米安
プロパティのSizeVector
属性の最初の値をInf
に設定します。ソフトウェアによって儿童
、切点
および切割预测指数
のSizeVector
属性および可变尺寸
属性が変更され、木のノード数の新しい上限に合致するようになります。さらに、诺德米安
の可变尺寸
属性の最初の値が1.
に変更されます。
configurer.NodeMean.SizeVector=[Inf 1];
修改了Children的sizeevector属性以满足配置约束。CutPoint的SizeVector属性已被修改以满足配置约束。CutPredictorIndex的SizeVector属性已被修改以满足配置约束。已修改Children的VariableDimensions属性以满足配置约束。已修改CutPoint的VariableDimensions属性以满足配置约束。已修改CutPredictorIndex的VariableDimensions属性以满足配置约束。
configurer.NodeMean.VariableDimensions
ans=1 x2逻辑阵列1 0
コードの生成
C / c++コードを生成するには,適切に設定されているC / c++コンパイラにアクセスできなければなりません。MATLAB编码器は,サポートされているインストール済みのコンパイラを探して使用します。墨西哥人
设置
を使用すると,既定のコンパイラを表示および変更できます。詳細は,既定のコンパイラの変更を参照してください。
回帰木モデル (Mdl
) の関数预测
および使现代化
のコードを生成します。
生成代码(配置器)
generateCode在输出文件夹中创建这些文件:“initialize.m”、“predict.m”、“update.m”、“RegressionTreeModel.mat”代码生成成功。
関数生成代码
は,以下の処理を実行します。
コードを生成するために必要なMATLABファイルを生成する。これには,Mdl
の関数预测
および使现代化
にそれぞれ対応する 2.つのエントリポイント関数预测
および更新.m
が含まれます。
2.つのエントリポイント関数に対して、RegressionTreeModel
という名前の 墨西哥関数を作成する。
墨西哥人関数のコードをcodegen \墨西哥人\ RegressionTreeModel
フォルダーに作成する。
墨西哥関数を現在のフォルダーにコピーする。
生成されたコードの確認
予測子データを渡して、Mdl
の関数预测
と 墨西哥関数の関数预测
が同じ予測応答を返すかどうかを確認します。複数のエントリポイントがある 墨西哥関数内のエントリポイント関数を呼び出すため、1.番目の入力引数として関数名を指定します。
[Yfit,node]=预测(Mdl,XTrain);[Yfit\u-mex,node\u-mex]=回归树模型(“预测”,XTrain);
伊菲特
をYfit_mex
と、节点
をnode_-mex
と比較します。
最大值(abs(Yfit-Yfit_-mex),[],“全部”)
ans=0
isequal(node,node_-mex)
ans=必然的1.
一般的に、伊菲特
と比較すると、Yfit_mex
には丸めによる差が含まれている可能性があります。この場合では、比較によって伊菲特
とYfit_mex
が等しいことが確かめられます。
等质量
は,すべての入力引数が等しい場合に逻辑1 (真正的
) を返します。この比較により、Mdl
の関数预测
と 墨西哥関数の関数预测
が同じノード数を返すことを確認します。
モデルの再学習と生成コード内のパラメーターの更新
データセット全体を使用してモデルに再学習をさせます。
重新训练的DMDL=Firtree(X,Y);
validatedUpdateInputs
を使用して、更新するパラメーターを抽出します。この関数は、retrainedMdl
内の修正されたモデルパラメーターを判別し,修正されたパラメーター値がパラメーターのコーダー属性を満たすかどうかを検証します。
params = validatedUpdateInputs(配置、retrainedMdl);
生成されたコード内のパラメーターを更新します。
回归树模型(“更新”,参数)
生成されたコードの確認
retrainedMdl
の関数预测
の出力引数と、更新した 墨西哥関数の関数预测
の出力引数を比較します。
[Yfit,node]=预测(retainedmdl,X);[Yfit\u-mex,node\u-mex]=回归树模型(“预测”,X);最大值(abs(Yfit-Yfit_-mex),[],“全部”)
ans=0
isequal(node,node_-mex)
ans=必然的1.
この比較により、予測された応答およびノード数が等しいことを確認します。
Mdl
—機械学習モデル機械学習モデル。モデルオブジェクトを指定します。サポートされるモデルは次の表に記載されています。
モデル | モデルオブジェクト |
---|---|
マルチクラス分類用の二分決定木 | CompactClassificationTree |
1クラスおよびバイナリ分類用のSVM | CompactClassificationSVM |
バイナリ分類用の線形モデル | ClassificationLinear |
支持向量机モデルおよび線形モデル用のマルチクラス モデル | 紧凑分类 |
回帰用の二分決定木 | CompactRegressionTree |
サポート ベクター マシン (支持向量机)回帰 | 压缩回归 |
線形回帰 | RegressionLinear |
機械学習モデルのコード生成に関する使用上の注意および制限については,モデルオブジェクトのページの”コード生成“セクションを参照してください。
params
—更新するパラメーター機械学習モデル内の更新するパラメーター。更新する各パラメーターについてのフィールドをもつ構造体を指定します。
関数validatedUpdateInputs
を使用してparams
を作成します。この関数は,再学習済みモデルの修正されたパラメーターを検出し,修正されたパラメーターの値がパラメーターのコーダー属性を満たすかどうかを検証し,更新するパラメーターを構造体として返します。
更新できるパラメーターは、次の表に記載されているように、機械学習モデルによって異なります。
モデルに再学習をさせるときに,次の表に記載されている名前と値のペアの引数のいずれかを変更した場合,使现代化
を使用してパラメーターを更新することはできません。C/C++コードを再生成しなければなりません。
モデル | 更新がサポートされない引数 |
---|---|
マルチクラス分類用の二分決定木 | 菲茨特里 の引数 —“类名” 、“ScoreTransform” |
1クラスおよびバイナリ分類用のSVM | fitcsvm の引数 —“类名” 、“KernelFunction” 、“多项式序” 、“ScoreTransform” 、“标准化” |
バイナリ分類用の線形モデル | fitclinear の引数 —“类名” 、“ScoreTransform” |
支持向量机モデルおよび線形モデル用のマルチクラス モデル |
|
回帰用の二分決定木 | 菲特里 の引数 —“ResponseTransform” |
支持向量机回帰 | fitrsvm の引数 —“KernelFunction” 、“多项式序” 、“ResponseTransform” 、“标准化” |
線形回帰 | 菲特利恩 の引数 —“ResponseTransform” |
コーダー コンフィギュアラーのワークフローで生成代码
を使用して、エントリポイント関数更新.m
と、そのエントリポイント関数の 墨西哥関数の両方を作成します。墨西哥関数の名前が我的模型
であると仮定して、この構文を使用して使现代化
を呼び出します。
我的模型(“更新”,参数)
このページで説明している構文がエントリポイント関数でどのように使用されているかを確認するには、関数类型
を使用して更新.m
ファイルおよびinitialize.m
ファイルの内容を表示します。
类型更新.m类型initialize.m
更新.m
ファイルおよびinitialize.m
ファイルの内容を表示する例については、コーダー コンフィギュアラーの使用によるコードの生成を参照してください。
コーダーコンフィギュアラーのワークフローで,使现代化
の入力引数Mdl
は,loadLearnerForCoder
で返されるモデルです。このモデルと更新的DL
オブジェクトは、主に予測に必要なプロパティを含む、縮小した分類モデルまたは回帰モデルです。
使用上の注意事項および制限事項:
LearnerCoder配置器
を使用してコーダーコンフィギュアラーを作成してから,オブジェクト関数生成代码
を使用して预测
および使现代化
に対するコードを生成します。
機械学習モデルMdl
のコード生成に関する使用上の注意および制限については、モデル オブジェクトのページの「コード生成」セクションを参照してください。
モデル | モデルオブジェクト |
---|---|
マルチクラス分類用の二分決定木 | CompactClassificationTree |
1クラスおよびバイナリ分類用のSVM | CompactClassificationSVM |
バイナリ分類用の線形モデル | ClassificationLinear |
支持向量机モデルおよび線形モデル用のマルチクラス モデル | 紧凑分类 |
回帰用の二分決定木 | CompactRegressionTree |
サポート ベクター マシン (支持向量机)回帰 | 压缩回归 |
線形回帰 | RegressionLinear |
詳細は,コード生成の紹介を参照してください。
次の MATLABコマンドに対応するリンクがクリックされました。
コマンドを MATLABコマンド ウィンドウに入力して実行してください。网状物ブラウザーは MATLABコマンドをサポートしていません。
你也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区站点不适合您所在位置的访问。