このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
predict
ガウス カーネル回帰モデルの応答を予測
説明
例
テスト セットの応答の予測
carbig
データ セットについてガウス カーネル回帰モデルを使用して、テスト セットの応答を予測します。
carbig
データ セットを読み込みます。
load carbig
予測子変数 (X
) と応答変数 (Y
) を指定します。
X = [Weight,Cylinders,Horsepower,Model_Year]; Y = MPG;
配列 X
および Y
から、それぞれの配列で NaN
値が含まれている行を削除します。NaN
値が含まれている行を削除してからデータを fitrkernel
に渡すと、学習が高速化され、メモリ使用量が少なくなります。
R = rmmissing([X Y]); X = R(:,1:4); Y = R(:,end);
観測値の 10% をホールドアウト標本として予約します。学習インデックスとテスト インデックスを分割の定義から抽出します。
rng(10) % For reproducibility N = length(Y); cvp = cvpartition(N,'Holdout',0.1); idxTrn = training(cvp); % Training set indices idxTest = test(cvp); % Test set indices
カーネル回帰モデルに学習させます。学習データを標準化します。
Xtrain = X(idxTrn,:);
Ytrain = Y(idxTrn);
Mdl = fitrkernel(Xtrain,Ytrain,'Standardize',true)
Mdl = RegressionKernel ResponseName: 'Y' Learner: 'svm' NumExpansionDimensions: 128 KernelScale: 1 Lambda: 0.0028 BoxConstraint: 1 Epsilon: 0.8617
Mdl
は RegressionKernel
モデルです。
テスト セットの応答を予測します。
Xtest = X(idxTest,:); Ytest = Y(idxTest); YFit = predict(Mdl,Xtest);
最初の 10 個の観測された応答値と予測された応答値が格納されているテーブルを作成します。
table(Ytest(1:10),YFit(1:10),'VariableNames', ... {'ObservedValue','PredictedValue'})
ans=10×2 table
ObservedValue PredictedValue
_____________ ______________
18 17.616
14 25.799
24 24.141
25 25.018
14 13.637
14 14.557
18 18.584
27 26.096
21 25.031
13 13.324
平均二乗誤差損失関数を使用して、テスト セットの回帰損失を推定します。
L = loss(Mdl,Xtest,Ytest)
L = 9.2664
入力引数
Mdl
— カーネル回帰モデル
RegressionKernel
モデル オブジェクト
カーネル回帰モデル。RegressionKernel
モデル オブジェクトを指定します。RegressionKernel
モデル オブジェクトは、fitrkernel
を使用して作成できます。
X
— 応答の生成に使用する予測子データ。
数値行列 | テーブル
応答の生成に使用する予測子データ。数値行列またはテーブルを指定します。
X
の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
数値行列の場合
X
の列に含まれている変数の順序は、Mdl
に学習させた予測子変数の順序と同じでなければなりません。テーブル (たとえば
Tbl
) を使用してMdl
に学習をさせた場合、Tbl
に含まれている予測子変数がすべて数値変数であれば、X
を数値行列にすることができます。学習時にTbl
内の数値予測子をカテゴリカルとして扱うには、fitrkernel
の名前と値のペアの引数CategoricalPredictors
を使用してカテゴリカル予測子を同定します。Tbl
に種類の異なる予測子変数 (数値および categorical データ型など) が混在し、X
が数値行列である場合、predict
でエラーがスローされます。
テーブルの場合
predict
は、文字ベクトルの cell 配列ではない cell 配列や複数列の変数をサポートしません。テーブル (たとえば
Tbl
) を使用してMdl
に学習をさせた場合、X
内のすべての予測子変数は変数名およびデータ型が、Mdl
に学習させた (Mdl.PredictorNames
に格納されている) 変数と同じでなければなりません。ただし、X
の列の順序がTbl
の列の順序に対応する必要はありません。また、Tbl
とX
に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict
はこれらを無視します。数値行列を使用して
Mdl
に学習をさせた場合、Mdl.PredictorNames
内の予測子名とX
内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定する方法については、fitrkernel
の名前と値のペアの引数PredictorNames
を参照してください。X
内の予測子変数はすべて数値ベクトルでなければなりません。X
に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict
はこれらを無視します。
データ型: double
| single
| table
prediction
— 予測子に欠損値がある観測値に使用する予測した応答値
"median"
(既定値) | "mean"
| 数値スカラー
R2023b 以降
予測子に欠損値がある観測値に使用する予測した応答値。"median"
、"mean"
、または数値スカラーとして指定します。
値 | 説明 |
---|---|
"median" | predict は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の中央値を使用します。 |
"mean" | predict は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。 |
数値スカラー | predict は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。 |
例: "mean"
例: NaN
データ型: single
| double
| char
| string
出力引数
拡張機能
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
モデル オブジェクトの使用上の注意および制限については、
RegressionKernel
オブジェクトのコード生成を参照してください。X
一般的なコード生成の場合、
X
は、単精度または倍精度の行列か、数値変数、カテゴリカル変数、またはその両方を含む table でなければなりません。X
の行数、または観測値の数は可変サイズにすることができますが、X
の列数は固定でなければなりません。X
を table として指定する場合、モデルは table を使用して学習させたものでなければならず、かつ予測のためのエントリポイント関数で次を行う必要があります。データを配列として受け入れる。
データ入力の引数から table を作成し、その table 内で変数名を指定する。
table を
predict
に渡す。
このテーブルのワークフローの例については、table のデータを分類するためのコードの生成を参照してください。コード生成におけるテーブルの使用の詳細については、table のコード生成 (MATLAB Coder)およびコード生成における table の制限事項 (MATLAB Coder)を参照してください。
名前と値の引数 名前と値の引数に含まれる名前はコンパイル時の定数でなければなりません。
PredictionForMissingValue
の値が非数値の場合、コンパイル時の定数でなければなりません。
詳細は、コード生成の紹介を参照してください。
バージョン履歴
R2018a で導入R2023b: 予測子に欠損値がある観測値に使用する予測した応答値の指定
R2023b 以降で損失を予測または計算する際、一部の回帰モデルでは、予測子に欠損値がある観測値について予測した応答値を指定できます。名前と値の引数 PredictionForMissingValue
を指定して、予測値として数値スカラー、学習セットの中央値、または学習セットの平均値を使用します。損失を計算するときに、予測子に欠損値がある観測値を省略するように指定することもできます。
次の表は、名前と値の引数 PredictionForMissingValue
をサポートするオブジェクト関数の一覧です。既定では、これらの関数は、予測子に欠損値がある観測値について予測した応答値として、学習セットの中央値を使用します。
モデル タイプ | モデル オブジェクト | オブジェクト関数 |
---|---|---|
ガウス過程回帰 (GPR) モデル | RegressionGP , CompactRegressionGP | loss , predict , resubLoss , resubPredict |
RegressionPartitionedGP | kfoldLoss , kfoldPredict | |
ガウス カーネル回帰モデル | RegressionKernel | loss , predict |
RegressionPartitionedKernel | kfoldLoss , kfoldPredict | |
線形回帰モデル | RegressionLinear | loss , predict |
RegressionPartitionedLinear | kfoldLoss , kfoldPredict | |
ニューラル ネットワーク回帰モデル | RegressionNeuralNetwork , CompactRegressionNeuralNetwork | loss , predict , resubLoss , resubPredict |
RegressionPartitionedNeuralNetwork | kfoldLoss , kfoldPredict | |
サポート ベクター マシン (SVM) 回帰モデル | RegressionSVM , CompactRegressionSVM | loss , predict , resubLoss , resubPredict |
RegressionPartitionedSVM | kfoldLoss , kfoldPredict |
以前のリリースでは、上記の回帰モデル関数 loss
および predict
は、予測子に欠損値がある観測値について予測した応答値として NaN
を使用していました。予測子に欠損値がある観測値は、予測と損失の再代入 ("resub") と交差検証 ("kfold") の計算で省略されていました。
R2023a: 予測用の C/C++ コードの生成
関数 predict
に対する C/C++ コードを生成できます。
参考
fitrkernel
| loss
| RegressionKernel
| resume
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)