# predict

ガウス カーネル分類モデルのラベルの予測

## 構文

``Label = predict(Mdl,X)``
``[Label,Score] = predict(Mdl,X)``

## 説明

``Label = predict(Mdl,X)` は、バイナリ ガウス カーネル分類モデル `Mdl` に基づいて、予測子データ `X` 内の各観測値について予測したクラス ラベルを返します。`

``[Label,Score] = predict(Mdl,X)` は、両方のクラスの分類スコアも返します。`

## 例

すべて折りたたむ

バイナリ カーネル分類モデルを使用して学習セットのラベルを予測し、生成された分類の混同行列を表示します。

`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 つの良好なレーダー反射を不良な反射として誤分類します。

`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)` の事後確率が格納されます。

```[fpr,tpr,~,auc] = perfcurve(Y(testInds),posterior(:,2),Mdl.ClassNames(2)); auc```
```auc = 0.9042 ```

AUC は `1` に近いので、モデルによるラベルの予測精度が高いことがわかります。

ROC 曲線をプロットします。

```figure; plot(fpr,tpr) h = gca; h.XLim(1) = -0.1; h.YLim(2) = 1.1; xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve')``` ## 入力引数

すべて折りたたむ

バイナリ カーネル分類モデル。`ClassificationKernel` モデル オブジェクトを指定します。`ClassificationKernel` モデル オブジェクトは、`fitckernel` を使用して作成できます。

データ型: `single` | `double`

## 出力引数

すべて折りたたむ

`Label` の行数は n (n は `X` 内の観測値の個数)、データ型は `Mdl` の学習に使用した、観測されたクラス ラベル (`Y`) と同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。

`predict` は、スコアが最高になるクラスに観測値を分類します。

`Mdl.Learner``'logistic'` の場合、分類スコアは事後確率です。

## 詳細

すべて折りたたむ

### 分類スコア

カーネル分類モデルの場合、観測値 x (行列ベクトル) を陽性クラスに分類する生の "分類スコア" は次のように定義されます。

`$f\left(x\right)=T\left(x\right)\beta +b.$`

• $T\left(·\right)$ は特徴量を拡張するための観測値の変換です。

• β は推定された係数の列ベクトルです。

• b は推定されたスカラー バイアスです。

x を陰性クラスに分類する生の分類スコアは −f(x) です。このソフトウェアでは、スコアが正になるクラスに観測値が分類されます。

カーネル分類モデルがロジスティック回帰学習器から構成されている場合、`'logit'` スコア変換が生の分類スコアに適用されます (`ScoreTransform` を参照)。

R2017b で導入