主要内容

分類学習器で学習させたロジスティック回帰モデルのコ,ド生成

この例では,分類学習器を使用してロジスティック回帰モデルに学習させ,エクスポートされた分類モデルを使用してラベルを予測するCコードを生成する方法を示します。

標本デ,タの読み込み

標本デ,タを読み込み,デ,タを分類学習器アプリに,ンポ,トします。

病人デ,タセットを読み込みます。p個の予測子で構成される予測子デ,タXと応答変数Yを指定します。

负载病人X =[年龄舒张高度收缩压体重];p = size(X,2);Y =性别;

[アプリ]タブで,[アプリ]セクションの右にある[さらに表示]矢印をクリックしてギャラリ,を表示し,[分類学習器]を選択します。[分類学習器]タブの[ファ电子邮箱ル]セクションで,[新規セッション],[ワ.クスペ.スから]を選択します。

[ワクスペスからの新規セッション]ダアログボックスの[デ,タセット変数]で,ワ,クスペ,ス変数のリストからX選択します。[応答][ワ,クスペ,スから]オプションボタンをクリックし,リストからYを選択します。既定の検証方式をそのまま使用して続行するため,[セッションの開始]をクリックします。既定の検証オプションは5分割交差検証であるため,過適合が防止されます。

分類学習器の既定の設定では,デ,タの散布図が作成されます。

ロジスティック回帰モデルの学習

分類学習器アプリでロジスティック回帰モデルに学習させます。

[分類学習器]タブの[モデル]セクションで[さらに表示]矢印をクリックして分類器のギャラリ,を表示します。[ロジスティック回帰分類器]セクションで[ロジスティック回帰]モデルをクリックします。[学習]セクションで,[すべてを学習]をクリックして[選択を学習]を選択します。モデルの学習が行われ,交差検証精度スコアが[精度 (検証)]に表示されます。

ワ,クスペ,スへのモデルのエクスポ,ト

モデルをmatlab®ワクスペスにエクスポトし,saveLearnerForCoderを使用して保存します。

[エクスポ,ト]セクションで[モデルのエクスポ,ト],[コンパクトモデルのエクスポ,ト]を選択します。ダ电子邮箱アログボックスで,trainedLogisticRegressionModelをモデル名として指定し,(好的)をクリックします。

構造体trainedLogisticRegressionModelがmatlabワ,クスペ,スに表示されます。trainedLogisticRegressionModelGeneralizedLinearModelフィ,ルドにコンパクトモデルが含まれています。

メモ:この例をすべてのサポートファイルを含めて実行する場合は,モデルをエクスポートする代わりに,コマンドラインでtrainedLogisticRegressionModel.matファ@ @ルを読み込むことができます。trainedLogisticRegressionModel構造体は前の手順を使用して作成されたものです。

负载(“trainedLogisticRegressionModel.mat”

コマンドラ@ @ンで,現在のフォルダ@ @のmyModel.matという名前のファ@ @ルにコンパクトモデルを保存します。

saveLearnerForCoder (trainedLogisticRegressionModel。GeneralizedLinearModel,“myModel”

さらに,学習させたモデルの成功,失敗,および欠落したクラスの名前を保存します

classNames = {trainedLogisticRegressionModel。SuccessClass,...trainedLogisticRegressionModel.FailureClass trainedLogisticRegressionModel.MissingClass};保存(“ModelParameters.mat”“类名”);

予測用のcコ,ドの生成

予測のためのエントリポ电子邮箱ント関数を定義し,codegenを使用して関数のコ,ドを生成します。

現在のフォルダ,で,以下を行うclassifyX.mという名前の関数を定義します。

  • ロジスティック回帰モデルの学習に使用したものと同じ予測子変数が含まれている観測値の数値行列(X)を受け入れる

  • myModel.mat内の分類モデルを読み込む

  • モデルを使用して予測確率を計算する

  • 予測確率を电子邮箱ンデックスに変換する(成功は1,失敗は2,欠損値は3)

  • ModelParameters.mat内のクラス名を読み込む

  • クラス名に@ @ンデックスを付けることで予測ラベルを返す

函数标签=分类(X)% # codegen使用逻辑回归模型进行分类% CLASSIFYX对X中的测量值进行分类使用myModel.mat文件中的逻辑回归模型,然后返回label中的类标签。n = size(X,1);Label = code .nullcopy(cell(n,1));CompactMdl = loadLearnerForCoder(“myModel”);probability = predict(CompactMdl,X);指数= ~isnan(概率).*((概率<0.5)+1)+ isnan(概率)*3;classInfo = code .load(“ModelParameters”);classNames = classInfo.classNames;i = 1:n label{i} = classNames{index(i)};结束结束

メモ:特徴選択や主成分分析(PCA)の使用後に分類学習器でロジスティック回帰モデルを作成する場合は,エントリポイント関数のコードに追加の行を含めなければなりません。それらの追加の手順の例にいては,コ,ド生成と分類学習器アプリを参照してください。

classifyX.mからmex関数を生成します。coder.typeofを使用して,コ,ド生成用の行列数据を作成します。数据の行数が任意であり数据の列数がpであることを指定します。pはロジスティック回帰モデルの学習に使用した予測子の数です。arg游戏オプションを使用して,数据を引数として指定します。

数据=编码器。typeof(X,[Inf p],[10 0]);codegenclassifyX.marg游戏数据
代码生成成功。

codegenはmexファ超市ルclassifyX_mex.mex64を現在のフォルダ,に生成します。ファ▪▪ルの拡張子はプラットフォ▪▪ムによって異なります。

予期されるラベルをmex関数が返すことを確認します。Xから15個の観測値を無作為に抽出します。

rng (“默认”%用于再现性testX = datasample(X,15);

分類学習器で学習させた分類モデルで関数predictFcnを使用して観測値を分類します。

testLabels = trainedLogisticRegressionModel.predictFcn(testX);

生成されたmex関数classifyX_mexを使用して観測値を分類します。

testLabelsMEX = classifyX_mex(testX);

予測子のセットを比較します。testLabelstestLabelsMEXが等しい場合,isequalは逻辑1 (true)を返します。

isequal (testLabels testLabelsMEX)
ans =逻辑1

predictFcnとmex関数classifyX_mexで同じ値が返されています。

参考

||(MATLAB编码器)|(MATLAB编码器)||

関連するトピック