分類学習器で学習させたロジスティック回帰モデルのコ,ド生成
この例では,分類学習器を使用してロジスティック回帰モデルに学習させ,エクスポートされた分類モデルを使用してラベルを予測するCコードを生成する方法を示します。
標本デ,タの読み込み
標本デ,タを読み込み,デ,タを分類学習器アプリに,ンポ,トします。
病人
デ,タセットを読み込みます。p
個の予測子で構成される予測子デ,タX
と応答変数Y
を指定します。
负载病人X =[年龄舒张高度收缩压体重];p = size(X,2);Y =性别;
[アプリ]タブで,[アプリ]セクションの右にある[さらに表示]矢印をクリックしてギャラリ,を表示し,[分類学習器]を選択します。[分類学習器]タブの[ファ电子邮箱ル]セクションで,[新規セッション],[ワ.クスペ.スから]を選択します。
[ワクスペスからの新規セッション]ダアログボックスの[デ,タセット変数]で,ワ,クスペ,ス変数のリストからX
選択します。[応答]の[ワ,クスペ,スから]オプションボタンをクリックし,リストからY
を選択します。既定の検証方式をそのまま使用して続行するため,[セッションの開始]をクリックします。既定の検証オプションは5分割交差検証であるため,過適合が防止されます。
分類学習器の既定の設定では,デ,タの散布図が作成されます。
ロジスティック回帰モデルの学習
分類学習器アプリでロジスティック回帰モデルに学習させます。
[分類学習器]タブの[モデル]セクションで[さらに表示]矢印をクリックして分類器のギャラリ,を表示します。[ロジスティック回帰分類器]セクションで[ロジスティック回帰]モデルをクリックします。[学習]セクションで,[すべてを学習]をクリックして[選択を学習]を選択します。モデルの学習が行われ,交差検証精度スコアが[精度 (検証)]に表示されます。
ワ,クスペ,スへのモデルのエクスポ,ト
モデルをmatlab®ワクスペスにエクスポトし,saveLearnerForCoder
を使用して保存します。
[エクスポ,ト]セクションで[モデルのエクスポ,ト],[コンパクトモデルのエクスポ,ト]を選択します。ダ电子邮箱アログボックスで,trainedLogisticRegressionModel
をモデル名として指定し,(好的)をクリックします。
構造体trainedLogisticRegressionModel
がmatlabワ,クスペ,スに表示されます。trainedLogisticRegressionModel
のGeneralizedLinearModel
フィ,ルドにコンパクトモデルが含まれています。
メモ:この例をすべてのサポートファイルを含めて実行する場合は,モデルをエクスポートする代わりに,コマンドラインで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);
予測子のセットを比較します。testLabels
とtestLabelsMEX
が等しい場合,isequal
は逻辑1 (true)を返します。
isequal (testLabels testLabelsMEX)
ans =逻辑1
predictFcn
とmex関数classifyX_mex
で同じ値が返されています。
参考
loadLearnerForCoder
|saveLearnerForCoder
|coder.typeof
(MATLAB编码器)|codegen
(MATLAB编码器)|fitglm
|预测