このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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: {3x4 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);
SVM 分類器の標本内事後確率の推定
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.482415e-01,-1.217768e-01)' NumObservations: 351 Alpha: [90x1 double] Bias: -0.1342 KernelParameters: [1x1 struct] Mu: [0.8917 0 0.6413 0.0444 0.6011 0.1159 0.5501 ... ] Sigma: [0.3112 0 0.4977 0.4414 0.5199 0.4608 0.4927 ... ] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [351x1 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.0004 0.30431
{'g'} {'g'} 1.8686 0.86918
{'b'} {'b'} -2.6462 0.084133
{'g'} {'g'} 1.2808 0.79188
{'b'} {'b'} -1.4618 0.22022
{'g'} {'g'} 2.1673 0.89815
{'b'} {'b'} -5.7093 0.0050066
{'g'} {'g'} 2.4797 0.92224
{'b'} {'b'} -2.7811 0.074784
事後確率のロジットの検査による GAM の比較
予測子の線形項と交互作用項の両方が格納されている分類一般化加法モデル (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: [10x2 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 = 3x1 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
のクラスの順序に対応します。
入力引数
Mdl
— 分類機械学習モデル
完全な分類モデル オブジェクト
分類機械学習モデル。完全な分類モデル オブジェクトとして指定します。サポートされるモデルは次の表に記載されています。
モデル | 分類モデル オブジェクト |
---|---|
一般化加法モデル | ClassificationGAM |
k 最近傍モデル | ClassificationKNN |
単純ベイズ モデル | ClassificationNaiveBayes |
ニューラル ネットワーク モデル | ClassificationNeuralNetwork |
1 クラスおよびバイナリ分類用のサポート ベクター マシン | ClassificationSVM |
includeInteractions
— 交互作用項を含むというフラグ
true
| false
モデルの交互作用項を含むというフラグ。true
または false
として指定します。この引数は、一般化加法モデル (GAM) の場合のみ有効です。つまり、この引数を指定できるのは、Mdl
が ClassificationGAM
である場合だけです。
Mdl
に交互作用項が含まれる場合、既定値は true
です。モデルに交互作用項が含まれない場合、値は false
でなければなりません。
データ型: logical
出力引数
label
— 予測クラス ラベル
categorical 配列 | 文字配列 | logical ベクトル | 数値ベクトル | 文字ベクトルの cell 配列
予測クラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として返されます。
label
は、Mdl
に学習させた観測済みクラス ラベルと同じデータ型になり、Mdl.X
の観測値の数と同じ長さになります。(string 配列は文字ベクトルの cell 配列として扱われます)。
Score
— クラス スコア
数値行列
クラス スコア。数値行列として返されます。Score
は、Mdl.X
の観測値の数に等しい行と、学習データ (size(Mdl.ClassNames,1)
) の個々のクラスの数に等しい列をもちます。
Cost
— 予測誤分類コスト
数値行列
予測誤分類コスト。数値行列として返されます。この出力は 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 |
拡張機能
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
この関数は、
ClassificationKNN
またはClassificationSVM
オブジェクトとして指定した学習済み分類モデルの GPU 配列を完全にサポートします。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2012a で導入
参考
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)