このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

# predict

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

## 構文

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

## 説明

``Label = predict(Mdl,X)` は、バイナリ ガウス カーネル分類モデル `Mdl` に基づいて、行列または table `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` を使用して作成できます。

`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` の行数は 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 で導入