resubPredict
学習済み分類器を使用した学習データの分類
構文
説明
例
fisheriris
データ セットを読み込みます。150 本のアヤメについて 4 つの測定値が含まれる数値行列 X
を作成します。対応するアヤメの種類が含まれる文字ベクトルの cell 配列 Y
を作成します。
load fisheriris X = meas; Y = species; rng('default') % For reproducibility
予測子 X
とクラス ラベル Y
を使用して、単純ベイズ分類器に学習させます。クラス名を指定することが推奨されます。fitcnb
は、各予測子が条件付き正規分布に従うと仮定しています。
Mdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3×4 cell} Properties, Methods
Mdl
は学習させた ClassificationNaiveBayes
分類器です。
学習標本のラベルを予測します。
label = resubPredict(Mdl);
10 件の観測値の無作為なセットについて結果を表示します。
idx = randsample(size(X,1),10); table(Y(idx),label(idx),'VariableNames', ... {'True Label','Predicted Label'})
ans=10×2 table
True Label Predicted Label
______________ _______________
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
{'virginica' } {'virginica' }
{'versicolor'} {'versicolor'}
{'virginica' } {'virginica' }
{'versicolor'} {'versicolor'}
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
{'virginica' } {'virginica' }
{'setosa' } {'setosa' }
真のラベル Y
と予測ラベル label
から混同チャートを作成します。
cm = confusionchart(Y,label);
ionosphere
データ セットを読み込みます。このデータ セットには、レーダー反射についての 34 個の予測子と、不良 ('b'
) または良好 ('g'
) という 351 個の二項反応が含まれています。
load ionosphere
サポート ベクター マシン (SVM) 分類器に学習させます。データを標準化し、'g'
が陽性クラスであることを指定します。
SVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true);
SVMModel
は ClassificationSVM
分類器です。
スコアから事後確率への最適な変換関数パラメーターを近似します。
rng(1); % For reproducibility
ScoreSVMModel = fitPosterior(SVMModel)
ScoreSVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: '@(S)sigmoid(S,-9.482430e-01,-1.217774e-01)' NumObservations: 351 Alpha: [90×1 double] Bias: -0.1342 KernelParameters: [1×1 struct] Mu: [0.8917 0 0.6413 0.0444 0.6011 0.1159 0.5501 0.1194 0.5118 0.1813 0.4762 0.1550 0.4008 0.0934 0.3442 0.0711 0.3819 -0.0036 0.3594 -0.0240 0.3367 0.0083 0.3625 -0.0574 0.3961 -0.0712 0.5416 -0.0695 0.3784 … ] (1×34 double) Sigma: [0.3112 0 0.4977 0.4414 0.5199 0.4608 0.4927 0.5207 0.5071 0.4839 0.5635 0.4948 0.6222 0.4949 0.6528 0.4584 0.6180 0.4968 0.6263 0.5191 0.6098 0.5182 0.6038 0.5275 0.5785 0.5085 0.5162 0.5500 0.5759 0.5080 … ] (1×34 double) BoxConstraints: [351×1 double] ConvergenceInfo: [1×1 struct] IsSupportVector: [351×1 logical] Solver: 'SMO' Properties, Methods
クラスは不可分であるため、スコア変換関数 (ScoreSVMModel.ScoreTransform
) はシグモイド関数です。
学習データのスコアと陽性のクラスの事後確率を推定します。最初の 10 件の観測の結果を表示します。
[label,scores] = resubPredict(SVMModel); [~,postProbs] = resubPredict(ScoreSVMModel); table(Y(1:10),label(1:10),scores(1:10,2),postProbs(1:10,2),'VariableNames',... {'TrueLabel','PredictedLabel','Score','PosteriorProbability'})
ans=10×4 table
TrueLabel PredictedLabel Score PosteriorProbability
_________ ______________ _______ ____________________
{'g'} {'g'} 1.4862 0.82216
{'b'} {'b'} -1.0003 0.30433
{'g'} {'g'} 1.8685 0.86917
{'b'} {'b'} -2.6457 0.084171
{'g'} {'g'} 1.2807 0.79186
{'b'} {'b'} -1.4616 0.22025
{'g'} {'g'} 2.1674 0.89816
{'b'} {'b'} -5.7085 0.00501
{'g'} {'g'} 2.4798 0.92224
{'b'} {'b'} -2.7812 0.074781
予測子の線形項と交互作用項の両方が格納されている分類一般化加法モデル (GAM) を使用して、学習データについて事後確率のロジット (分類スコア) を推定します。分類スコアを計算する際に交互作用項を含めるかどうかを指定します。
ionosphere
データ セットを読み込みます。このデータ セットには、レーダー反射についての 34 個の予測子と、不良 ('b'
) または良好 ('g'
) という 351 個の二項反応が含まれています。
load ionosphere
予測子 X
とクラス ラベル Y
を使用して、GAM に学習させます。クラス名を指定することが推奨されます。上位 10 個の最も重要な交互作用項を含めるように指定します。
Mdl = fitcgam(X,Y,'ClassNames',{'b','g'},'Interactions',10)
Mdl = ClassificationGAM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'logit' Intercept: 3.2565 Interactions: [10×2 double] NumObservations: 351 Properties, Methods
Mdl
は ClassificationGAM
モデル オブジェクトです。
線形項と交互作用項の両方を使用してラベルを予測してから、線形項のみを使用してラベルを予測します。交互作用項を除外するには、'IncludeInteractions',false
を指定します。ScoreTransform
プロパティとして 'none'
を指定して、事後確率のロジットを推定します。
Mdl.ScoreTransform = 'none'; [labels,scores] = resubPredict(Mdl); [labels_nointeraction,scores_nointeraction] = resubPredict(Mdl,'IncludeInteractions',false);
真のラベル、予測ラベルおよびスコアが格納されている table を作成します。table の最初の 8 行を表示します。
t = table(Y,labels,scores,labels_nointeraction,scores_nointeraction, ... 'VariableNames',{'True Labels','Predicted Labels','Scores' ... 'Predicted Labels Without Interactions','Scores Without Interactions'}); head(t)
True Labels Predicted Labels Scores Predicted Labels Without Interactions Scores Without Interactions ___________ ________________ __________________ _____________________________________ ___________________________ {'g'} {'g'} -51.628 51.628 {'g'} -47.676 47.676 {'b'} {'b'} 37.433 -37.433 {'b'} 36.435 -36.435 {'g'} {'g'} -62.061 62.061 {'g'} -58.357 58.357 {'b'} {'b'} 37.666 -37.666 {'b'} 36.297 -36.297 {'g'} {'g'} -47.361 47.361 {'g'} -43.373 43.373 {'b'} {'b'} 106.48 -106.48 {'b'} 102.43 -102.43 {'g'} {'g'} -62.665 62.665 {'g'} -58.377 58.377 {'b'} {'b'} 201.46 -201.46 {'b'} 197.84 -197.84
学習データ X
の予測ラベルは交互作用項を含めても変化しませんが、推定スコア値は異なります。
単純ベイズ分類器を使用して、標本内の事後確率と誤分類コストを推定します。
fisheriris
データ セットを読み込みます。150 本のアヤメについて 4 つの測定値が含まれる数値行列 X
を作成します。対応するアヤメの種類が含まれる文字ベクトルの cell 配列 Y
を作成します。
load fisheriris X = meas; Y = species; rng('default') % For reproducibility
予測子 X
とクラス ラベル Y
を使用して、単純ベイズ分類器に学習させます。クラス名を指定することが推奨されます。fitcnb
は、各予測子が条件付き正規分布に従うと仮定しています。
Mdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'});
Mdl
は学習させた ClassificationNaiveBayes
分類器です。
学習データの事後確率と予測誤分類コストを推定します。
[label,Posterior,MisclassCost] = resubPredict(Mdl); Mdl.ClassNames
ans = 3×1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
無作為に選択した 10 個の観測値についての結果を表示します。
idx = randsample(size(X,1),10); table(Y(idx),label(idx),Posterior(idx,:),MisclassCost(idx,:),'VariableNames', ... {'TrueLabel','PredictedLabel','PosteriorProbability','MisclassificationCost'})
ans=10×4 table
TrueLabel PredictedLabel PosteriorProbability MisclassificationCost
______________ ______________ _________________________________________ ______________________________________
{'virginica' } {'virginica' } 6.2514e-269 1.1709e-09 1 1 1 1.1709e-09
{'setosa' } {'setosa' } 1 5.5339e-19 2.485e-25 5.5339e-19 1 1
{'virginica' } {'virginica' } 7.4191e-249 1.4481e-10 1 1 1 1.4481e-10
{'versicolor'} {'versicolor'} 3.4472e-62 0.99997 3.362e-05 1 3.362e-05 0.99997
{'virginica' } {'virginica' } 3.4268e-229 6.597e-09 1 1 1 6.597e-09
{'versicolor'} {'versicolor'} 6.0941e-77 0.9998 0.00019663 1 0.00019663 0.9998
{'virginica' } {'virginica' } 1.3467e-167 0.002187 0.99781 1 0.99781 0.002187
{'setosa' } {'setosa' } 1 1.5776e-15 5.7172e-24 1.5776e-15 1 1
{'virginica' } {'virginica' } 2.0116e-232 2.6206e-10 1 1 1 2.6206e-10
{'setosa' } {'setosa' } 1 1.8085e-17 1.9639e-24 1.8085e-17 1 1
Posterior
と MisclassCost
の列の順序は、Mdl.ClassNames
のクラスの順序に対応します。
入力引数
分類機械学習モデル。完全な分類モデル オブジェクトとして指定します。サポートされるモデルは次の表に記載されています。
モデル | 分類モデル オブジェクト |
---|---|
一般化加法モデル | ClassificationGAM |
k 最近傍モデル | ClassificationKNN |
単純ベイズ モデル | ClassificationNaiveBayes |
ニューラル ネットワーク モデル | ClassificationNeuralNetwork |
1 クラスおよびバイナリ分類用のサポート ベクター マシン | ClassificationSVM |
モデルの交互作用項を含むというフラグ。true
または false
として指定します。この引数は、一般化加法モデル (GAM) の場合のみ有効です。つまり、この引数を指定できるのは、Mdl
が ClassificationGAM
である場合だけです。
Mdl
に交互作用項が含まれる場合、既定値は true
です。モデルに交互作用項が含まれない場合、値は false
でなければなりません。
データ型: logical
出力引数
予測クラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として返されます。
label
は、Mdl
に学習させた観測済みクラス ラベルと同じデータ型になり、Mdl.X
の観測値の数と同じ長さになります。(string 配列は文字ベクトルの cell 配列として扱われます)。
クラス スコア。数値行列として返されます。Score
は、Mdl.X
の観測値の数に等しい行と、学習データ (size(Mdl.ClassNames,1)
) の個々のクラスの数に等しい列をもちます。
予測誤分類コスト。数値行列として返されます。この出力は k 最近傍モデルと単純ベイズ モデルにのみ適用されます。つまり、resubPredict
が Cost
を返すのは、Mdl
が ClassificationKNN
または ClassificationNaiveBayes
である場合だけです。
Cost
は、Mdl.X
の観測値の数に等しい行と、学習データ (size(Mdl.ClassNames,1)
) の個々のクラスの数に等しい列をもちます。
Cost(j,k)
はクラス k
(クラス Mdl.ClassNames(k)
内) で予測される Mdl.X
の行 j
の観測値の予測誤分類コストです。
アルゴリズム
resubPredict
は、オブジェクト (Mdl
) の対応する関数 predict
に従って予測を計算します。モデル固有の説明については、次の表に示す関数 predict
のリファレンス ページを参照してください。
モデル | 分類モデル オブジェクト (Mdl ) | オブジェクト関数 predict |
---|---|---|
一般化加法モデル | ClassificationGAM | predict |
k 最近傍モデル | ClassificationKNN | predict |
単純ベイズ モデル | ClassificationNaiveBayes | predict |
ニューラル ネットワーク モデル | ClassificationNeuralNetwork | predict |
1 クラスおよびバイナリ分類用のサポート ベクター マシン | ClassificationSVM | predict |
拡張機能
使用上の注意事項および制限事項:
この関数は、
ClassificationKNN
、ClassificationNeuralNetwork
、またはClassificationSVM
オブジェクトとして指定した学習済み分類モデルの GPU 配列を完全にサポートします。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2012a で導入resubPredict
は、ClassificationNeuralNetwork
の GPU 配列を完全にサポートします。
R2023b 以降では、次の分類モデルのオブジェクト関数において、予測子に欠損値がある観測値が再代入 ("resub") と交差検証 ("kfold") による分類エッジ、損失、マージン、および予測の計算でその一部として使用されます。
以前のリリースでは、予測子に欠損値がある観測値は再代入と交差検証の計算で省略されていました。
参考
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)