predict
ガウス カーネル分類モデルのラベルの予測
説明
例
学習セットのラベルの予測
バイナリ カーネル分類モデルを使用して学習セットのラベルを予測し、生成された分類の混同行列を表示します。
ionosphere
データ セットを読み込みます。このデータ セットには、レーダー反射についての 34 個の予測子と、不良 ('b'
) または良好 ('g'
) という 351 個の二項反応が含まれています。
load ionosphere
レーダー反射が不良 ('b'
) と良好 ('g'
) のどちらであるかを識別するバイナリ カーネル分類モデルに学習をさせます。
rng('default') % For reproducibility Mdl = fitckernel(X,Y);
Mdl
は ClassificationKernel
モデルです。
学習セット (再代入) のラベルを予測します。
label = predict(Mdl,X);
混同行列を作成します。
ConfusionTrain = confusionchart(Y,label);
このモデルは、各クラスについて 1 つずつのレーダー反射を誤分類します。
テスト セットのラベルの予測
バイナリ カーネル分類モデルを使用してテスト セットのラベルを予測し、生成された分類の混同行列を表示します。
ionosphere
データ セットを読み込みます。このデータ セットには、レーダー反射についての 34 個の予測子と、不良 ('b'
) または良好 ('g'
) という 351 個の二項反応が含まれています。
load ionosphere
データ セットを学習セットとテスト セットに分割します。テスト セット用に 15% のホールドアウト標本を指定します。
rng('default') % For reproducibility Partition = cvpartition(Y,'Holdout',0.15); trainingInds = training(Partition); % Indices for the training set testInds = test(Partition); % Indices for the test set
学習セットを使用してバイナリ カーネル分類モデルに学習をさせます。クラスの順序を定義することをお勧めします。
Mdl = fitckernel(X(trainingInds,:),Y(trainingInds),'ClassNames',{'b','g'});
学習セットのラベルとテスト セットのラベルを予測します。
labelTrain = predict(Mdl,X(trainingInds,:)); labelTest = predict(Mdl,X(testInds,:));
学習セットの混同行列を作成します。
ConfusionTrain = confusionchart(Y(trainingInds),labelTrain);
このモデルは、各クラスについて 1 つずつのレーダー反射のみを誤分類します。
テスト セットの混同行列を作成します。
ConfusionTest = confusionchart(Y(testInds),labelTest);
このモデルは、1 つの不良なレーダー反射を良好な反射として、5 つの良好なレーダー反射を不良な反射として誤分類します。
事後クラス確率の推定
テスト セットの事後クラス確率を推定し、受信者動作特性 (ROC) 曲線をプロットしてモデルの品質を判断します。カーネル分類モデルは、ロジスティック回帰学習器の場合のみ事後確率を返します。
ionosphere
データ セットを読み込みます。このデータ セットには、レーダー反射についての 34 個の予測子と、不良 ('b'
) または良好 ('g'
) という 351 個の二項反応が含まれています。
load ionosphere
データ セットを学習セットとテスト セットに分割します。テスト セット用に 30% のホールドアウト標本を指定します。
rng('default') % For reproducibility Partition = cvpartition(Y,'Holdout',0.30); trainingInds = training(Partition); % Indices for the training set testInds = test(Partition); % Indices for the test set
バイナリ カーネル分類モデルに学習をさせます。ロジスティック回帰学習器を当てはめます。
Mdl = fitckernel(X(trainingInds,:),Y(trainingInds), ... 'ClassNames',{'b','g'},'Learner','logistic');
テスト セットの事後クラス確率を予測します。
[~,posterior] = predict(Mdl,X(testInds,:));
Mdl
内の正則化強度は 1 つなので、出力 posterior
は列数が 2 で行数がテスト セットの観測値数と同じである行列になります。列 i
には、与えられた特定の観測値に対する Mdl.ClassNames(i)
の事後確率が格納されます。
rocmetrics
オブジェクトを作成し、ROC 曲線のパフォーマンス メトリクス (真陽性率と偽陽性率) を計算して ROC 曲線の下の領域 (AUC) の値を求めます。
rocObj = rocmetrics(Y(testInds),posterior,Mdl.ClassNames);
rocmetrics
の関数 plot
を使用して、2 番目のクラスの ROC 曲線をプロットします。
plot(rocObj,ClassNames=Mdl.ClassNames(2))
AUC は 1
に近いので、モデルによるラベルの予測精度が高いことがわかります。
入力引数
Mdl
— バイナリ カーネル分類モデル
ClassificationKernel
モデル オブジェクト
バイナリ カーネル分類モデル。ClassificationKernel
モデル オブジェクトを指定します。ClassificationKernel
モデル オブジェクトは、fitckernel
を使用して作成できます。
X
— 分類対象の予測子データ
数値行列 | テーブル
分類対象の予測子データ。数値行列またはテーブルを指定します。
X
の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
数値行列の場合
X
の列に含まれている変数の順序は、Mdl
に学習させた予測子変数の順序と同じでなければなりません。テーブル (たとえば
Tbl
) を使用してMdl
に学習をさせた場合、Tbl
に含まれている予測子変数がすべて数値変数であれば、X
を数値行列にすることができます。学習時にTbl
内の数値予測子をカテゴリカルとして扱うには、fitckernel
の名前と値のペアの引数CategoricalPredictors
を使用してカテゴリカル予測子を指定します。Tbl
に種類の異なる予測子変数 (数値および categorical データ型など) が混在し、X
が数値行列である場合、predict
でエラーがスローされます。
テーブルの場合
predict
は、文字ベクトルの cell 配列ではない cell 配列や複数列の変数をサポートしません。テーブル (たとえば
Tbl
) を使用してMdl
に学習をさせた場合、X
内のすべての予測子変数は変数名およびデータ型が、Mdl
に学習させた (Mdl.PredictorNames
に格納されている) 変数と同じでなければなりません。ただし、X
の列の順序がTbl
の列の順序に対応する必要はありません。また、Tbl
とX
に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict
はこれらを無視します。数値行列を使用して
Mdl
に学習をさせた場合、Mdl.PredictorNames
内の予測子名とX
内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定する方法については、fitckernel
の名前と値のペアの引数PredictorNames
を参照してください。X
内の予測子変数はすべて数値ベクトルでなければなりません。X
に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict
はこれらを無視します。
データ型: table
| double
| single
出力引数
Label
— 予測クラス ラベル
categorical 配列 | 文字配列 | logical 行列 | 数値行列 | 文字ベクトルの cell 配列
詳細
分類スコア
カーネル分類モデルの場合、観測値 x (行列ベクトル) を陽性クラスに分類する生の "分類スコア" は次のように定義されます。
は特徴量を拡張するための観測値の変換です。
β は推定された係数の列ベクトルです。
b は推定されたスカラー バイアスです。
x を陰性クラスに分類する生の分類スコアは −f(x) です。このソフトウェアでは、スコアが正になるクラスに観測値が分類されます。
カーネル分類モデルがロジスティック回帰学習器から構成されている場合、'logit'
スコア変換が生の分類スコアに適用されます (ScoreTransform
を参照)。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。 (R2023a 以降)
使用上の注意事項および制限事項:
saveLearnerForCoder
、loadLearnerForCoder
およびcodegen
(MATLAB Coder) を使用して、関数predict
のコードを生成します。saveLearnerForCoder
を使用して、学習済みモデルを保存します。loadLearnerForCoder
を使用して保存済みモデルを読み込んで関数predict
を呼び出す、エントリポイント関数を定義します。次に、codegen
を使用して、エントリポイント関数のコードを生成します。predict
用の単精度 C/C++ コードを生成するには、関数loadLearnerForCoder
を呼び出すときに名前と値の引数"DataType","single"
を指定します。Open Multiprocessing (OpenMP) ライブラリを使用している場合、コード ジェネレーターで生成される
predict
のコードで予測子データX
が複数のチャンクに分割され、チャンクに対する応答が並列に予測されます。生成されるコードでは、parfor
(MATLAB Coder) を使用して、サポートされる共有メモリ マルチコア プラットフォームで並列実行されるループが作成されます。コンパイラで OpenMP アプリケーション インターフェイスがサポートされていない場合や OpenMP ライブラリを無効にした場合は、生成されるコードで予測子データが分割されず、したがって観測値が一度に 1 つずつ処理されます。サポートされるコンパイラについては、サポートされるコンパイラを参照してください。OpenMP ライブラリを無効にするには、構成オブジェクトのEnableOpenMP
プロパティをfalse
に設定します。詳細については、coder.CodeConfig
(MATLAB Coder) を参照してください。次の表は、
predict
の引数に関する注意です。この表に含まれていない引数は、完全にサポートされています。引数 注意と制限 Mdl
モデル オブジェクトの使用上の注意および制限については、
ClassificationKernel
オブジェクトのコード生成を参照してください。X
一般的なコード生成の場合、
X
は、単精度または倍精度の行列か、数値変数、カテゴリカル変数、またはその両方を含む table でなければなりません。X
の行数、または観測値の数は可変サイズにすることができますが、X
の列数は固定でなければなりません。X
を table として指定する場合、モデルは table を使用して学習させたものでなければならず、かつ予測のためのエントリポイント関数で次を行う必要があります。データを配列として受け入れる。
データ入力の引数から table を作成し、その table 内で変数名を指定する。
table を
predict
に渡す。
このテーブルのワークフローの例については、table のデータを分類するためのコードの生成を参照してください。コード生成におけるテーブルの使用の詳細については、table のコード生成 (MATLAB Coder)およびコード生成における table の制限事項 (MATLAB Coder)を参照してください。
詳細は、コード生成の紹介を参照してください。
バージョン履歴
R2017b で導入R2023a: 予測用の C/C++ コードの生成
関数 predict
に対する C/C++ コードを生成できます。
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)