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
Properties, Methods
Mdl は RegressionKernel モデルです。
テスト セットの応答を予測します。
Xtest = X(idxTest,:); Ytest = Y(idxTest); YFit = predict(Mdl,Xtest);
最初の 10 個の観測された応答値と予測された応答値が格納されている table を作成します。
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
入力引数
カーネル回帰モデル。RegressionKernel モデル オブジェクトを指定します。RegressionKernel モデル オブジェクトは、fitrkernel を使用して作成できます。
応答の生成に使用する予測子データ。数値行列または table を指定します。
X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
数値行列の場合
Xの列に含まれている変数の順序は、Mdlに学習させた予測子変数の順序と同じでなければなりません。table (たとえば
Tbl) を使用してMdlに学習をさせた場合、Tblに含まれている予測子変数がすべて数値変数であれば、Xを数値行列にすることができます。学習時にTbl内の数値予測子をカテゴリカルとして扱うには、fitrkernelの名前と値のペアの引数CategoricalPredictorsを使用してカテゴリカル予測子を同定します。Tblに種類の異なる予測子変数 (数値および categorical データ型など) が混在し、Xが数値行列である場合、predictでエラーがスローされます。
table の場合
predictは、文字ベクトルの cell 配列ではない cell 配列や複数列の変数をサポートしません。table (たとえば
Tbl) を使用してMdlに学習をさせた場合、X内のすべての予測子変数は変数名およびデータ型が、Mdlに学習させた (Mdl.PredictorNamesに格納されている) 変数と同じでなければなりません。ただし、Xの列の順序がTblの列の順序に対応する必要はありません。また、TblとXに追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predictはこれらを無視します。数値行列を使用して
Mdlに学習をさせた場合、Mdl.PredictorNames内の予測子名とX内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定する方法については、fitrkernelの名前と値のペアの引数PredictorNamesを参照してください。X内の予測子変数はすべて数値ベクトルでなければなりません。Xに追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predictはこれらを無視します。
データ型: double | single | table
R2023b 以降
予測子に欠損値がある観測値に使用する予測した応答値。"median"、"mean"、または数値スカラーとして指定します。
| 値 | 説明 |
|---|---|
"median" | predict は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の中央値を使用します。 |
"mean" | predict は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。 |
| 数値スカラー | predict は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。 |
例: "mean"
例: NaN
データ型: single | double | char | string
出力引数
拡張機能
predict 関数は、tall 配列を次の使用上の注意事項および制限事項付きでサポートします。
predictは talltableデータをサポートしていません。
詳細は、tall 配列を参照してください。
使用上の注意および制限:
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 のデータを分類するためのコードの生成を参照してください。コード生成における table の使用の詳細については、table のコード生成 (MATLAB Coder)およびコード生成における table の制限事項 (MATLAB Coder)を参照してください。
名前と値の引数 名前と値の引数に含まれる名前はコンパイル時の定数でなければなりません。
PredictionForMissingValueの値が非数値の場合、コンパイル時の定数でなければなりません。
詳細は、コード生成の紹介を参照してください。
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2018a で導入predict は GPU 配列を完全にサポートします。
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") の計算で省略されていました。
関数 predict に対する C/C++ コードを生成できます。
参考
fitrkernel | loss | RegressionKernel | resume
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)