主要内容

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

ClassificationSVMCoderConfigurer

1クラスおよびバイナリ分類用のサポートベクターマシン(SVM)のコーダーコンフィギュアラー

説明

ClassificationSVMCoderConfigurerオブジェクトは,svm分類モデル(ClassificationSVMまたはCompactClassificationSVM)のコ,ダ,コンフィギュアラ,です。

コーダーコンフィギュアラーには,コード生成オプションの設定,C / c++コードの生成,および生成されたコード内のモデルパラメーターの更新を行うための便利な機能があります。

  • コード生成オプションを設定し,オブジェクトのプロパティを使用してSVMモデルパラメーターのコーダー属性を指定します。

  • generateCodeを使用して,svm分類モデルの関数预测および更新に対してc / c++コドを生成します。C/ c++コ,ドの生成にはMATLAB®编码器™が必要です。

  • コドを再生成せずに,生成されたc / c++コドのモデルパラメタを更新します。この機能により,新しいデータまたは設定でSVMモデルに再学習をさせるときに,C / c++コードの再生成,再展開および再確認に必要な作業が低減されます。モデルパラメ,タ,を更新する前に,validatedUpdateInputsを使用して更新対象のモデルパラメ,タ,を検証および抽出します。

次のフローチャートは,コーダーコンフィギュアラーを使用するコード生成のワークフローを示します。

两个代码生成工作流:第一个在训练一个模型之后,第二个在重新训练同一个模型之后。第一个工作流,步骤1:创建一个编码器配置器。步骤2:生成代码。步骤3:验证生成的代码。第二个工作流,第1步:检查更新是否有效。是,执行步骤2;如果没有,请转到第一个工作流的第一步。步骤2:在生成的代码中更新模型参数。

支持向量机分類モデルのコド生成に関する使用上の注意および制限にいては,CompactClassificationSVM预测および更新の“コ,ド生成”セクションを参照してください。

作成

fitcsvmを使用してSVM分類モデルに学習をさせた後で,learnerCoderConfigurerを使用してモデルのコ,ダ,コンフィギュアラ,を作成します。コ,ダ,コンフィギュアラ,のプロパティを使用して,预测および更新の引数のコ,ダ,属性を指定します。その後,generateCodeを使用して,指定したコダ属性に基づくc / c++コドを生成します

プロパティ

すべて展開する

预测の引数

この節に記載されているプロパティは,生成されるコ,ドにおける関数预测の引数のコ,ダ,属性を指定します。

支持向量机分類モデルの関数预测に対して生成されるc / c++コドに渡す,予測子デタのコダ属性。LearnerCoderInputオブジェクトを指定します。

関数learnerCoderConfigurerを使用してコ,ダ,コンフィギュアラ,を作成する場合,入力引数XLearnerCoderInputのコ,ダ,属性の既定値を決定します。

  • SizeVector-既定値は入力Xの配列サ@ @ズです。

  • VariableDimensions-この値は[0 0](既定)または[1 0]です。

    • [0 0]は,SizeVectorの指定に従って配列サ@ @ズを固定することを示します。

    • [1 0]は,配列の行が可変サaapl .ズ,列が固定サaapl .ズであることを示します。この場合,SizeVectorの1番目の値は行数の上限,SizeVectorの2番目の値は列数です。

  • 数据类型-この値はまたはです。既定のデ,タ型は,入力Xのデ,タ型に依存します。

  • 可调谐性-この値は,生成されるc / c++コドの预测に必ず予測子デ,タを入力として含めることを意味する真正的でなければなりません。

コ,ダ,属性は,ドット表記を使用して変更できます。たとえば,3 つの予測子変数の 100 個の観測値が含まれている予測子データを受け入れる C/C++ コードを生成するには、コーダー コンフィギュアラー配置Xのコ,ダ,属性を次のように指定します。

configuration . x . sizevector = [100 3];configurer.X.DataType =“双”;configuration . x . variabledimensions = [0 0];
[0 0]は,Xの1番目および2番目の次元(それぞれ観測値の個数と予測子変数の個数)が固定サイズであることを示します。

生成されるC / c++コードが,最大100個の観測値がある予測子データを受け入れるようにするには,次のようにXのコ,ダ,属性を指定します。

configuration . x . sizevector = [100 3];configurer.X.DataType =“双”;configuration . x . variabledimensions = [10];
[1 0]は,Xの1番目の次元(観測値の個数)が可変サXの2番目の次元(予測子変数の個数)が固定サesc escズであることを示します。指定した観測値の個数(この例では100)は,生成されるC / c++コードで許容される観測値の最大数になります。任意の個数の観測値を可能にするには,上限としてを指定します。

支持向量机分類モデルの関数预测に対して生成されるc / c++コドから返される出力引数の個数。1または2を指定します。

预测の出力引数は,順番に标签(予測されたクラスラベル)および分数(スコアまたは事後確率)です。生成されたc / c++コドの预测は,関数预测の最初のn個の出力を返します。nNumOutputsの値です。

コダコンフィギュアラ配置を作成した後で,ドット表記を使用して出力の個数を指定できます。

配置。NumOutputs= 2;

NumOutputsプロパティは,codegen(MATLAB编码器)のコンパ@ @ラオプション“-nargout”と等価です。このオプションは,コ,ド生成のエントリポ,ント関数における出力引数の個数を指定します。オブジェクト関数generateCodeは,svm分類モデルの関数预测および更新に対してpredict.mおよびupdate.mという2つのエントリポイント関数をそれぞれ生成し,この2つのエントリポイント関数に対してC / c++コードを生成します。NumOutputsプロパティにいて指定した値は,エントリポント関数predict.mの出力引数の個数に対応します。

デ,タ型:

更新の引数

この節に記載されているプロパティは,生成されるコ,ドにおける関数更新の引数のコ,ダ,属性を指定します。関数更新は,学習済みモデルと新しいモデルパラメーターを入力引数として受け入れ,新しいパラメーターが含まれている更新されたバージョンのモデルを返します。生成コード内のパラメーターを更新できるようにするには,コード生成の前にパラメーターのコーダー属性を指定する必要があります。各パラメ,タ,のコ,ダ,属性を指定するには,LearnerCoderInputオブジェクトを使用します。既定の属性値は,learnerCoderConfigurerの入力引数Mdlのモデルパラメ,タ,に基づきます。

学習済み分類器の係数(支持向量机分類モデルのα)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector-既定値は(年代,1)です。年代は,Mdl内のサポ,トベクタ,の個数です。

  • VariableDimensions-この値は[0 0](既定)または[1 0]です。

    • [0 0]は,SizeVectorの指定に従って配列サ@ @ズを固定することを示します。

    • [1 0]は,配列の行が可変サaapl .ズ,列が固定サaapl .ズであることを示します。この場合,SizeVectorの1番目の値は行数の上限,SizeVectorの2番目の値は列数です。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性-線形カ,ネル関数が含まれているモデルに学習をさせるときに,線形予測子の係数(β)がモデルに格納されており,サポ,トベクタ,および関連する値は格納されていない場合,この値はでなければなりません。それ以外の場合,この値は真正的でなければなりません。

線形予測子の係数(支持向量机分類モデルのβ)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector-この値は(1页)でなければなりません。pは,Mdl内の予測子の個数です。

  • VariableDimensions-この値は,SizeVectorの指定に従って配列サ@ @ズを固定することを示す[0 0]でなければなりません。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性-線形カ,ネル関数が含まれているモデルに学習をさせるときに,線形予測子の係数(β)がモデルに格納されており,サポ,トベクタ,および関連する値は格納されていない場合,この値は真正的でなければなりません。それ以外の場合,この値はでなければなりません。

バ▪▪アス項(支持向量机分類モデルの偏见)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector-この値は[1]でなければなりません。

  • VariableDimensions-この値は,SizeVectorの指定に従って配列サ@ @ズを固定することを示す[0 0]でなければなりません。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性-この値は真正的でなければなりません。

誤分類コスト(支持向量机分類モデルの成本)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector—バesc escナリ分類の場合、この値は(2 - 2)でなければなりません。1クラス分類の場合、この値は[1]でなければなりません。

  • VariableDimensions-この値は,SizeVectorの指定に従って配列サ@ @ズを固定することを示す[0 0]でなければなりません。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性—バesc escナリ分類の場合、既定値は真正的です。1クラス分類の場合、この値はでなければなりません。

予測子の平均(支持向量机分類モデルのμ)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector- - - - - -“标准化”,真正的を指定することにより,標準化された予測子デ,タを使用してMdlに学習をさせる場合,この値は(1, p)でなければなりません。pMdl内の予測子の個数です。それ以外の場合,この値は(0,0)でなければなりません。

  • VariableDimensions-この値は,SizeVectorの指定に従って配列サ@ @ズを固定することを示す[0 0]でなければなりません。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性- - - - - -“标准化”,真正的を指定することにより,標準化された予測子デ,タを使用してMdlに学習をさせる場合,既定値は真正的です。それ以外の場合,この値はでなければなりません。

事前確率(支持向量机分類モデルの之前)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector—バesc escナリ分類の場合、この値は(1 2)でなければなりません。1クラス分類の場合、この値は[1]でなければなりません。

  • VariableDimensions-この値は,SizeVectorの指定に従って配列サ@ @ズを固定することを示す[0 0]でなければなりません。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性—バesc escナリ分類の場合、既定値は真正的です。1クラス分類の場合、この値はでなければなりません。

カ,ネルスケ,ルパラメ,タ,(支持向量机分類モデルのKernelParameters.Scale)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector-この値は[1]でなければなりません。

  • VariableDimensions-この値は,SizeVectorの指定に従って配列サ@ @ズを固定することを示す[0 0]でなければなりません。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性-既定値は真正的です。

予測子の標準偏差(支持向量机分類モデルのσ)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector- - - - - -“标准化”,真正的を指定することにより,標準化された予測子デ,タを使用してMdlに学習をさせる場合,この値は(1, p)でなければなりません。pMdl内の予測子の個数です。それ以外の場合,この値は(0,0)でなければなりません。

  • VariableDimensions-この値は,SizeVectorの指定に従って配列サ@ @ズを固定することを示す[0 0]でなければなりません。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性- - - - - -“标准化”,真正的を指定することにより,標準化された予測子デ,タを使用してMdlに学習をさせる場合,既定値は真正的です。それ以外の場合,この値はでなければなりません。

サポ,トベクタ,のクラスラベル(支持向量机分類モデルの万博1manbetxSupportVectorLabels)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector-既定値は(年代,1)です。年代は,Mdl内のサポ,トベクタ,の個数です。

  • VariableDimensions-この値は[0 0](既定)または[1 0]です。

    • [0 0]は,SizeVectorの指定に従って配列サ@ @ズを固定することを示します。

    • [1 0]は,配列の行が可変サaapl .ズ,列が固定サaapl .ズであることを示します。この場合,SizeVectorの1番目の値は行数の上限,SizeVectorの2番目の値は列数です。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性-線形カ,ネル関数が含まれているモデルに学習をさせるときに,線形予測子の係数(β)がモデルに格納されており,サポ,トベクタ,および関連する値は格納されていない場合,この値はでなければなりません。それ以外の場合,この値は真正的でなければなりません。

サポ,トベクタ,(支持向量机分類モデルの万博1manbetxSupportVectors)のコ,ダ,属性。LearnerCoderInputオブジェクトを指定します。

LearnerCoderInputオブジェクトの既定の属性値は,learnerCoderConfigurerの入力引数Mdlに基づきます。

  • SizeVector-既定値は(s, p)です。年代Mdl内のサポ,トベクタ,の個数,pは予測子の個数です。

  • VariableDimensions-この値は[0 0](既定)または[1 0]です。

    • [0 0]は,SizeVectorの指定に従って配列サ@ @ズを固定することを示します。

    • [1 0]は,配列の行が可変サaapl .ズ,列が固定サaapl .ズであることを示します。この場合,SizeVectorの1番目の値は行数の上限,SizeVectorの2番目の値は列数です。

  • 数据类型-この値は“单一”または“双”です。既定のデ,タ型は,Mdlの学習に使用する学習デ,タのデ,タ型に一致します。

  • 可调谐性-線形カ,ネル関数が含まれているモデルに学習をさせるときに,線形予測子の係数(β)がモデルに格納されており,サポ,トベクタ,および関連する値は格納されていない場合,この値はでなければなりません。それ以外の場合,この値は真正的でなければなりません。

他のコンフィギュアラ,のオプション

生成されるc / c++コドのファル名。文字ベクトルを指定します。

ClassificationSVMCoderConfigurerのオブジェクト関数generateCodec / c++コドを生成します。

オペレーティングシステムの構成によってはコード生成に失敗する可能性があるので,ファイル名には空白を含めないでください。また,名前は有効なmatlab関数名でなければなりません。

コダコンフィギュアラ配置を作成した後で,ドット表記を使用してファ。

配置。OutputFileName =“myModel”

デ,タ型:字符

詳細レベル。真正的(逻辑1)または(逻辑0)を指定します。詳細レベルは,コマンド ラインにおける通知メッセージの表示を制御します。

説明
真正的(逻辑1) パラメーターのコーダー属性に対する変更によって他の従属するパラメーターが変化する場合,通知メッセージが表示されます。
(逻辑0) 通知メッセ,ジは表示されません。

生成コード内の機械学習のモデルパラメーターを更新できるようにするには,コード生成の前にパラメーターのコーダー属性を構成する必要があります。パラメ,タ,のコ,ダ,属性は互いに依存するので,依存関係が構成の制約として保存されます。コダコンフィギュアラを使用してパラメーターのコーダー属性を変更するときに、構成の制約を満たすために他の従属するパラメーターも変更する必要がある場合、従属するパラメーターのコーダー属性が変更されます。詳細レベルは、これらの引き続いて起きた変更についてメッセージを表示するかどうかを決定します。

コダコンフィギュアラ配置を作成した後で,ドット表記を使用して詳細レベルを変更できます。

配置。详细的= false;

デ,タ型:逻辑

コド生成のカスタマズのオプション

コド生成ワクフロをカスタマズするには,関数generateCodeを使用するのではなく,関数generateFilesと以下の3のプロパティをcodegen(MATLAB编码器)で使用します。

関数generateFilesを使用して2のエントリポント関数ファル(predict.mおよびupdate.m)を生成した後で,独自のコ,ド生成ワ,クフロ,に従って,これらのファ,ルを変更できます。たとえば,predict.mファイルを変更してデータの前処理を含めたり,これらのエントリポイント関数を別のコード生成プロジェクトに追加したりできます。その後,関数codegenと,変更したエントリポcodegen(MATLAB编码器)の引数とを使用してc / c++コドを生成できます。引数codegenを設定するための出発点として,このセクションで説明されている3のプロパティを使用します。

このプロパティは読み取り専用です。

codegen(MATLAB编码器)の引数。细胞配列を指定します。

このプロパティにより,コド生成ワクフロをカスタマズできます。ワクフロをカスタマズする必要がない場合は関数generateCodeを使用します。

generateCodeをコダコンフィギュアラ配置に対して使用する代わりに,次のようにしてc / c++コ,ドを生成できます。

generateFiles(配置程序)cgArgs = configuration . codegenerationarguments;codegen (cgArgs {}):
コ,ド生成ワ,クフロ,をカスタマ,ズする場合,それに応じて,codegenを呼び出す前にcgArgsを変更します。

配置の他のプロパティを変更すると,それに従ってCodeGenerationArgumentsプロパティが更新されます。

デ,タ型:细胞

このプロパティは読み取り専用です。

コド生成用のエントリポント関数predict.mの入力引数。编码器。PrimitiveType(MATLAB编码器)オブジェクトのcell配列を指定します。编码器。PrimitiveTypeオブジェクトには,Xプロパティに格納されている予測子デ,タのコ,ダ,属性が含まれています。

予測子デ,タのコ,ダ,属性を変更すると,それに従って编码器。PrimitiveTypeオブジェクトが更新されます。

PredictInputs编码器。PrimitiveTypeオブジェクトは,コ,ダ,コンフィギュアラ,配置配置。CodeGenerationArguments {6}と等価です。

デ,タ型:细胞

このプロパティは読み取り専用です。

コド生成用のエントリポント関数update.mの調整可能な入力引数のリスト。编码器。PrimitiveType(MATLAB编码器)オブジェクトが含まれている構造体のcell配列を指定します。各编码器。PrimitiveTypeオブジェクトには,調整可能な機械学習モデルパラメ,タ,のコ,ダ,属性が格納されます。

コ、ダ、コンフィギュアラ、のプロパティ(更新の引数のプロパティ)を使用してモデルパラメ,タ,のコ,ダ,属性を変更すると,それに従って対応する编码器。PrimitiveTypeオブジェクトが更新されます。機械学習モデルパラメ,タ,の可调谐性属性としてを指定した場合,対応する编码器。PrimitiveTypeオブジェクトがUpdateInputsのリストから削除されます。

UpdateInputsの構造体は,コ,ダ,コンフィギュアラ,配置配置。CodeGenerationArguments {3}と等価です。

デ,タ型:细胞

オブジェクト関数

generateCode コダコンフィギュアラの使用によるc / c++コドの生成
generateFiles コ,ダ,コンフィギュアラ,を使用するコ,ド生成用MATLABファ@ @ルの生成
validatedUpdateInputs 更新する機械学習モデルのパラメ,タ,の検証および抽出

すべて折りたたむ

機械学習モデルに学習させてから,コ,ダ,コンフィギュアラ,を使用して,このモデルの関数预测および更新に対してコ,ドを生成します。

电离层デタセットを読み込み,バナリ支持向量机分類モデルに学習をさせます。

负载电离层Mdl = fitcsvm(X,Y);

Mdlは,ClassificationSVMオブジェクトです。

learnerCoderConfigurerを使用して,ClassificationSVMモデルに。予測子デ,タXを指定します。関数learnerCoderConfigurerは,入力Xを使用して,関数预测の入力のコ,ダ,属性を設定します。

configurer = learnerCoderConfigurer(Mdl,X)
configurer = ClassificationSVMCoderConfigurer带属性:更新输入:Alpha: [1x1 LearnerCoderInput] SupportVectors: [1x1 Lea万博1manbetxrnerCoderInput] SupportVectorLabels: [1x1 LearnerCoderInput] Scale: [1x1 LearnerCoderInput] Bias: [1x1 LearnerCoderInput] Prior: [1x1 LearnerCoderInput] Cost: [1x1 LearnerCoderInput] Predict input: X: [1x1 LearnerCoderInput]代码生成参数:NumOutputs: 1 OutputFileName: ' classificationsvdermodel '属性,方法

配置は,ClassificationSVMオブジェクトのコ,ダ,コンフィギュアラ,であるClassificationSVMCoderConfigurerオブジェクトです。

C / c++コードを生成するには,適切に設定されているC / c++コンパイラにアクセスできなければなりません。MATLAB编码器は,サポ,トされている,ンスト,ラを探して使用します。墨西哥人设置を使用すると,既定のコンパ。詳細は,既定のコンパ@ @ラの変更を参照してください。

既定の設定を使用して,svm分類モデル(Mdl)の関数预测および更新に対するコ,ドを生成します。

generateCode(配置)
generateCode在output文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“ClassificationSVMModel。代码生成成功。

関数generateCodeは,以下の処理を実行します。

  • コドを生成するために必要なmatlabファルを生成する。これには,Mdlの関数预测および更新にそれぞれ対応する2のエントリポント関数predict.mおよびupdate.mが含まれます。

  • 2のエントリポント関数に対して,ClassificationSVMModelという名前のmex関数を作成する。

  • Mex関数のコ,ドをcodegen \墨西哥人\ ClassificationSVMModelフォルダ,に作成する。

  • Mex関数を現在のフォルダ,にコピ,する。

関数类型を使用して,predict.mupdate.mおよびinitialize.mファ@ @ルの内容を表示します。

类型predict.m
函数varargout = predict(X,varargin) %#代码原%由MATLAB自动生成,25- january -2022 08:25:39 [varargout{1:nargout}] =初始化('predict',X,varargin{:});结束
类型update.m
函数更新(varargin) %#codegen %由MATLAB自动生成,25-Jan-2022 08:25:39 initialize('update',varargin{:});结束
类型initialize.m
function [varargout] = initialize(command,varargin) %#codegen %由MATLAB自动生成,25- january 2022 08:25:39 code .inline('always')持久化模型if isempty(模型)model = loadLearnerForCoder('ClassificationSVMModel.mat');end switch(command) case 'update' %更新结构字段:Alpha % SupportVectors %万博1manbetx SupportVectorLabels % Scale % Bias % Prior % Cost model = 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が等しく,スコアの値が許容誤差内で等しいことを確認します。

詳細

すべて展開する

バ,ジョン履歴

R2018bで導入