bayesml.linearregression package#

モジュール内容#

このモジュールでは正規ガンマ事前分布を用いた線形回帰モデルを利用できます。

_images/linearregression_example.png

確率的データ生成モデル#

確率的データ生成モデルは以下の通りです:

  • \(d \in \mathbb N\): 次元

  • \(\boldsymbol{x} = [x_1, x_2, \dots , x_d] \in \mathbb{R}^d\): 説明変数。切片項を考慮する場合、それは \(\boldsymbol{x}\) の要素の一つとして含める必要があります。

  • \(y\in\mathbb{R}\): 目的変数

  • \(\tau \in\mathbb{R}_{>0}\): パラメータ

  • \(\boldsymbol{\theta}\in\mathbb{R}^{d}\): パラメータ

\[\begin{split}p(y|\boldsymbol{x},\boldsymbol{\theta},\tau) &= \mathcal N (y| \boldsymbol{\theta}^{\top} \boldsymbol{x},\tau^{-1}) \\ &= \sqrt{\frac{\tau}{2 \pi}} \exp \left\{ -\frac{\tau}{2} (y - \boldsymbol{\theta}^\top \boldsymbol{x})^2 \right\}.\end{split}\]
\[\begin{split}&\mathbb{E}[ y | \boldsymbol{x},\boldsymbol{\theta},\tau] = \boldsymbol{\theta}^{\top} \boldsymbol{x}, \\ &\mathbb{V}[ y | \boldsymbol{x},\boldsymbol{\theta},\tau ] = \tau^{-1}.\end{split}\]

事前分布#

事前分布は以下の通りです:

  • \(\boldsymbol{\mu_0} \in \mathbb{R}^d\): ハイパーパラメータ

  • \(\boldsymbol{\Lambda_0} \in \mathbb{R}^{d\times d}\): ハイパーパラメータ(正定値行列)

  • \(\alpha_0 \in \mathbb{R}_{>0}\): ハイパーパラメータ

  • \(\beta_0 \in \mathbb{R}_{>0}\): ハイパーパラメータ

\[\begin{split}p(\boldsymbol{\theta}, \tau) &= \mathcal{N}(\boldsymbol{\theta}|\boldsymbol{\mu}_0, (\tau \boldsymbol{\Lambda}_0)^{-1}) \mathrm{Gam}(\tau|\alpha_0,\beta_0)\\ &= \frac{|\tau \boldsymbol{\Lambda}_0|^{1/2}}{(2 \pi)^{d/2}} \exp \left\{ -\frac{\tau}{2} (\boldsymbol{\theta} - \boldsymbol{\mu}_0)^\top \boldsymbol{\Lambda}_0 (\boldsymbol{\theta} - \boldsymbol{\mu}_0) \right\} \frac{\beta_0^{\alpha_0}}{\Gamma (\alpha_0)} \tau^{\alpha_0 - 1} \exp \{ -\beta_0 \tau \} .\end{split}\]
\[\begin{split}\mathbb{E}[\boldsymbol{\theta}] &= \boldsymbol{\mu}_0 & \left( \alpha_0 > \frac{1}{2} \right), \\ \mathrm{Cov}[\boldsymbol{\theta}] &= \frac{\beta_0}{\alpha_0 - 1} \boldsymbol{\Lambda}_0^{-1} & (\alpha_0 > 1), \\ \mathbb{E}[\tau] &= \frac{\alpha_0}{\beta_0}, \\ \mathbb{V}[\tau] &= \frac{\alpha_0}{\beta_0^2}.\end{split}\]

事後分布#

事後分布は以下の通りです:

  • \(n \in \mathbb N\): サンプルサイズ

  • \(\boldsymbol{X} = [\boldsymbol{x}_1, \boldsymbol{x}_2, \dots , \boldsymbol{x}_n]^\top \in \mathbb{R}^{n \times d}\)

  • \(\boldsymbol{y} = [y_1, y_2, \dots , y_n]^\top \in \mathbb{R}^n\)

  • \(\boldsymbol{\mu}_n\in \mathbb{R}^d\): ハイパーパラメータ

  • \(\boldsymbol{\Lambda_n} \in \mathbb{R}^{d\times d}\): ハイパーパラメータ(正定値行列)

  • \(\alpha_n \in \mathbb{R}_{>0}\):ハイパーパラメータ

  • \(\beta_n \in \mathbb{R}_{>0}\): ハイパーパラメータ

\[\begin{split}p(\boldsymbol{\theta}, \tau | \boldsymbol{X}, \boldsymbol{y}) &= \mathcal{N}(\boldsymbol{\theta}|\boldsymbol{\mu}_n, (\tau \boldsymbol{\Lambda}_n)^{-1}) \mathrm{Gam}(\tau|\alpha_n,\beta_n)\\ &= \frac{|\tau \boldsymbol{\Lambda}_n|^{1/2}}{(2 \pi)^{d/2}} \exp \left\{ -\frac{\tau}{2} (\boldsymbol{\theta} - \boldsymbol{\mu}_n)^\top \boldsymbol{\Lambda}_n (\boldsymbol{\theta} - \boldsymbol{\mu}_n) \right\} \frac{\beta_n^{\alpha_n}}{\Gamma (\alpha_n)} \tau^{\alpha_n - 1} \exp \{ -\beta_n \tau \} .\end{split}\]
\[\begin{split}\mathbb{E}[\boldsymbol{\theta} | \boldsymbol{X}, \boldsymbol{y}] &= \boldsymbol{\mu}_n & \left( \alpha_n > \frac{1}{2} \right), \\ \mathrm{Cov}[\boldsymbol{\theta} | \boldsymbol{X}, \boldsymbol{y}] &= \frac{\beta_n}{\alpha_n - 1} \boldsymbol{\Lambda}_n^{-1} & (\alpha_n > 1), \\ \mathbb{E}[\tau | \boldsymbol{X}, \boldsymbol{y}] &= \frac{\alpha_n}{\beta_n}, \\ \mathbb{V}[\tau | \boldsymbol{X}, \boldsymbol{y}] &= \frac{\alpha_n}{\beta_n^2},\end{split}\]

ただし、ハイパーパラメータの更新ルールは次の通りです

\[\begin{split}\boldsymbol{\Lambda}_n &= \boldsymbol{\Lambda}_0 + \boldsymbol{X}^\top \boldsymbol{X},\\ \boldsymbol{\mu}_n &= \boldsymbol{\Lambda}_n^{-1} (\boldsymbol{\Lambda}_0 \boldsymbol{\mu}_0 + \boldsymbol{X}^\top \boldsymbol{y}),\\ \alpha_n &= \alpha_0 + \frac{n}{2},\\ \beta_n &= \beta_0 + \frac{1}{2} \left( -\boldsymbol{\mu}_n^\top \boldsymbol{\Lambda}_n \boldsymbol{\mu}_n + \boldsymbol{y}^\top \boldsymbol{y} + \boldsymbol{\mu}_0^\top \boldsymbol{\Lambda}_0 \boldsymbol{\mu}_0 \right).\end{split}\]

予測分布#

予測分布は以下の通りです:

  • \(\boldsymbol{x}_{n+1}\in \mathbb{R}^d\): 新たなデータ点

  • \(y_{n+1}\in \mathbb{R}\): 新たな目的変数

  • \(m_\mathrm{p} \in \mathbb{R}\): パラメータ

  • \(\lambda_\mathrm{p}\in \mathbb{R}\): パラメータ

  • \(\nu_\mathrm{p}\in \mathbb{R}\): パラメータ

\[\begin{split}p(y_{n+1} | \boldsymbol{X}, \boldsymbol{y}, \boldsymbol{x}_{n+1} ) &= \mathrm{St}\left(y_{n+1} \mid m_\mathrm{p}, \lambda_\mathrm{p}, \nu_\mathrm{p}\right) \\ &= \frac{\Gamma (\nu_\mathrm{p} / 2 + 1/2 )}{\Gamma (\nu_\mathrm{p} / 2)} \left( \frac{\lambda_\mathrm{p}}{\pi \nu_\mathrm{p}} \right)^{1/2} \left( 1 + \frac{\lambda_\mathrm{p} (y_{n+1} - m_\mathrm{p})^2}{\nu_\mathrm{p}} \right)^{-\nu_\mathrm{p}/2 - 1/2},\end{split}\]
\[\begin{split}\mathbb{E}[y_{n+1} | \boldsymbol{X}, \boldsymbol{y}, \boldsymbol{x}_{n+1}] &= m_\mathrm{p} & (\nu_\mathrm{p} > 1), \\ \mathbb{V}[y_{n+1} | \boldsymbol{X}, \boldsymbol{y}, \boldsymbol{x}_{n+1}] &= \frac{1}{\lambda_\mathrm{p}} \frac{\nu_\mathrm{p}}{\nu_\mathrm{p}-2} & (\nu_\mathrm{p} > 2),\end{split}\]

ここで、パラメータは事後分布のハイパーパラメータから以下のように求められます。

\[\begin{split}m_\mathrm{p} &= \boldsymbol{x}_{n+1}^{\top} \boldsymbol{\mu}_{n}, \\ \lambda_\mathrm{p} &= \frac{\alpha_{n}}{\beta_{n}}\left(1+\boldsymbol{x}_{n+1}^{\top} \boldsymbol{\Lambda}_{n} \boldsymbol{x}_{n+1}\right)^{-1}, \\ \nu_\mathrm{p} &= 2 \alpha_{n}.\end{split}\]

GitHubスターのお願い#

もしこのページが参考になったら、GitHubリポジトリにスターをいただけると開発の励みになります。
以下のリンクからリポジトリを開いて右上の☆Starを押してください。

リポジトリを開いて右上の☆Starを押す!

GitHubスター

クラス#

class bayesml.linearregression.GenModel(c_degree, theta_vec=None, tau=1.0, h_mu_vec=None, h_lambda_mat=None, h_alpha=1.0, h_beta=1.0, seed=None)#

ベースクラス: Generative

確率的データ生成モデルと事前分布

パラメータ:
c_degreeint

正の整数。

theta_vecnumpy ndarray, optional

実数のベクトルで、デフォルトでは [0.0, 0.0, ..., 0.0] となります

taufloat, optional

正の実数、デフォルトでは1.0です

h_mu_vecnumpy ndarray, optional

実数のベクトルで、デフォルトでは [0.0, 0.0, ..., 0.0] となります

h_lambda_matnumpy ndarray, optional

正定値行列、デフォルトでは単位行列

h_alphafloat, optional

正の実数、デフォルトでは1.0です

h_betafloat, optional

正の実数、デフォルトでは1.0です

seed{None, int}, optional

numpy.random.default_rng() を初期化するシード値です。デフォルトでは None

メソッド

gen_params()

事前分布からパラメータを生成します。

gen_sample([sample_size, x, constant])

確率的データ生成モデルからサンプルを生成します。

get_constants()

GenModel の定数を取得します。

get_h_params()

事前分布のハイパーパラメータを取得します。

get_params()

確率的データ生成モデルのパラメータを取得します。

load_h_params(filename)

h_paramsにハイパーパラメータをロードします。

load_params(filename)

Load the parameters saved by save_params.

save_h_params(filename)

python pickle モジュールを使ってハイパーパラメータを保存します。

save_params(filename)

python の pickle モジュールを使ってパラメータを保存します。

save_sample(filename[, sample_size, x, constant])

生成されたサンプルを NumPy .npz フォーマットで保存します。

set_h_params([h_mu_vec, h_lambda_mat, ...])

事前分布のハイパーパラメータを設定します。

set_params([theta_vec, tau])

確率的データ生成モデルのパラメータを設定します。

visualize_model([sample_size, constant])

確率的データ生成モデルと生成されたサンプルを可視化します。

get_constants()#

GenModel の定数を取得します。

返り値:
constantsdict of {str: int}
  • "c_degree":``self.c_degree``の値

set_h_params(h_mu_vec=None, h_lambda_mat=None, h_alpha=None, h_beta=None)#

事前分布のハイパーパラメータを設定します。

パラメータ:
h_mu_vecnumpy ndarray, optional

実数のベクトル、デフォルトではNone

h_lambda_matnumpy ndarray, optional

正定値行列、デフォルトではNone

h_alphafloat, optional

正の実数、デフォルトではNone

h_betafloat, optional

正の実数、デフォルトではNone

get_h_params()#

事前分布のハイパーパラメータを取得します。

返り値:
h_paramsdict of {str: float or numpy ndarray}
  • "h_mu_vec" : self.h_mu_vec の値

  • h_lambda_mat" : self.h_lambda_mat の値

  • "h_alpha" : self.h_alpha の値

  • "h_beta" : self.h_beta の値

gen_params()#

事前分布からパラメータを生成します。

生成された値は``self.theta_vec``および``self.tau``に設定されます。

set_params(theta_vec=None, tau=None)#

確率的データ生成モデルのパラメータを設定します。

パラメータ:
theta_vecnumpy ndarray, optional

実数のベクトル、デフォルトではNone

taufloat, optional, optional

正の実数、デフォルトではNone

get_params()#

確率的データ生成モデルのパラメータを取得します。

返り値:
paramsdict of {str: float or numpy ndarray}
  • "theta_vec" : self.theta_vec の値

  • "tau" : self.tau の値

gen_sample(sample_size=None, x=None, constant=True)#

確率的データ生成モデルからサンプルを生成します。

x が与えられた場合、他のオプション(sample_size および constant)とは独立して、そのまま説明変数として使用されます。

xが与えられていない場合、独立同分布の標準正規分布から生成されます。生成されるサンプルのサイズはsample_sizeで定義されます。constantがTrueの場合、生成された説明変数の最後の要素は1.0で上書きされます。

パラメータ:
sample_sizeint, オプション

正の整数、デフォルトは None です。

xnumpy ndarray, optional

浮動小数点数配列で、その形状は (sammple_size,c_degree) となります。デフォルトでは None です。

constantbool, optional

ブール値です。デフォルトでは True です。

返り値:
xnumpy ndarray

形状が (sammple_size,c_degree) の浮動小数点数配列です。

ynumpy ndarray

サイズが sammple_size の1次元の浮動小数点数配列です。

save_sample(filename, sample_size=None, x=None, constant=True)#

生成されたサンプルを NumPy .npz フォーマットで保存します。

x が与えられた場合、他のオプション(sample_size および constant)とは独立して、そのまま説明変数として使用されます。

xが与えられていない場合、独立同分布の標準正規分布から生成されます。生成されるサンプルのサイズはsample_sizeで定義されます。constantがTrueの場合、生成された説明変数の最後の要素は1.0で上書きされます。

生成されたサンプルは、キーワード「x」「y」付きのNpzFileとして保存されます。

パラメータ:
filenamestr

サンプルを保存するファイル名。ない場合は .npz が追加されます。

sample_sizeint, オプション

正の整数、デフォルトは None です。

xnumpy ndarray, optional

浮動小数点数配列で、その形状は (sammple_size,c_degree) となります。デフォルトでは None です。

constantbool, optional

ブール値です。デフォルトでは True です。

visualize_model(sample_size=100, constant=True)#

確率的データ生成モデルと生成されたサンプルを可視化します。

パラメータ:
sample_sizeint, オプション

正の整数、デフォルトは100です

constantbool, optional

ブール値です。デフォルトでは True です。

例

>>> import numpy as np
>>> from bayesml import linearregression
>>> model = linearregression.GenModel(c_degree=2,theta_vec=np.array([2,1]))
>>> model.visualize_model()
_images/linearregression_example.png
class bayesml.linearregression.LearnModel(c_degree, h0_mu_vec=None, h0_lambda_mat=None, h0_alpha=1.0, h0_beta=1.0)#

ベースクラス: Posterior, PredictiveMixin

事後分布と予測分布

パラメータ:
c_degreeint

正の整数。

h0_mu_vecnumpy ndarray, optional

実数のベクトルで、デフォルトでは [0.0, 0.0, ..., 0.0] となります

h0_lambda_matnumpy ndarray, optional

正定値行列、デフォルトでは単位行列

h0_alphafloat, optional

正の実数、デフォルトでは1.0です

h0_betafloat, optional

正の実数、デフォルトでは1.0です

属性:
hn_mu_vecnumpy ndarray

実数のベクトル

hn_lambda_matnumpy ndarray

正定値行列

hn_alphafloat

正の実数

hn_betafloat

正の実数

p_msnumpy ndarray

正の実数

p_lambdasnumpy ndarray

正の実数

p_nusnumpy ndarray

正の実数

メソッド

calc_log_marginal_likelihood()

対数周辺尤度の計算

calc_pred_dist(x)

予測分布のパラメータを計算します。

calc_pred_var()

予測分布の分散を計算

estimate_params([loss, dict_out])

与えられた基準の下で、確率的データ生成モデルのパラメータを推定します。

fit(x, y)

モデルをデータに当てはめます。

get_constants()

LearnModel の定数を取得します。

get_h0_params()

事後分布のハイパーパラメータの初期値を取得します。

get_hn_params()

事後分布のハイパーパラメータを取得します。

get_p_params()

予測分布のパラメータを取得します。

load_h0_params(filename)

h0_paramsにハイパーパラメータをロードします。

load_hn_params(filename)

hn_paramsにハイパーパラメータをロードします。

make_prediction([loss])

与えられた基準の下で、新しいデータ点を予測します。

overwrite_h0_params()

事後分布のハイパーパラメータの初期値を学習した値で上書きします。

pred_and_update(x, y[, loss])

逐次的に新しいデータを予測し、事後分布を更新

predict(x)

データを予測

reset_hn_params()

事後分布のハイパーパラメータを初期値に戻します。

save_h0_params(filename)

python pickle モジュールを使ってハイパーパラメータを保存します。

save_hn_params(filename)

python pickle モジュールを使ってハイパーパラメータを保存します。

set_h0_params([h0_mu_vec, h0_lambda_mat, ...])

事後分布のハイパーパラメータの初期値を設定します。

set_hn_params([hn_mu_vec, hn_lambda_mat, ...])

事後分布のハイパーパラメータの更新値を設定します。

update_posterior(x, y)

訓練データを使って事後分布のハイパーパラメータを更新します。

visualize_posterior()

パラメータの事後分布を可視化します。

get_constants()#

LearnModel の定数を取得します。

返り値:
constantsdict of {str: int}
  • "c_degree":``self.c_degree``の値

set_h0_params(h0_mu_vec=None, h0_lambda_mat=None, h0_alpha=None, h0_beta=None)#

事後分布のハイパーパラメータの初期値を設定します。

予測分布のパラメータも、self.h0_mu_vec、slef.h0_lambda_mat、self.h0_alpha、および``self.h0_beta``から計算されることにご留意ください。

パラメータ:
h0_mu_vecnumpy ndarray, optional

実数のベクトル、デフォルトではNone

h0_lambda_matnumpy ndarray, optional

正定値行列、デフォルトではNone

h0_alphafloat, optional

正の実数、デフォルトではNone

h0_betafloat, optional

正の実数、デフォルトではNone

get_h0_params()#

事後分布のハイパーパラメータの初期値を取得します。

返り値:
h0_paramsdict of {str: float or numpy ndarray}
  • h0_mu_vec : self.h0_mu_vec の値

  • h0_lambda_mat" : self.h0_lambda_mat の値

  • "h0_alpha" : self.h0_alpha の値

  • "h0_beta" : self.h0_beta の値

set_hn_params(hn_mu_vec=None, hn_lambda_mat=None, hn_alpha=None, hn_beta=None)#

事後分布のハイパーパラメータの更新値を設定します。

予測分布のパラメータも、self.hn_mu_vec、self.hn_lambda_mat、self.hn_alpha、および``self.hn_beta``から計算されることにご留意ください。

パラメータ:
hn_mu_vecnumpy ndarray, optional

実数のベクトル、デフォルトではNone

hn_lambda_matnumpy ndarray, optional

正定値行列、デフォルトではNone

hn_alphafloat, optional

正の実数、デフォルトではNone

hn_betafloat, optional

正の実数、デフォルトではNone

get_hn_params()#

事後分布のハイパーパラメータを取得します。

返り値:
hn_paramsdict of {str: float or numpy ndarray}
  • "hn_mu_vec" : self.hn_mu_vec の値

  • "hn_lambda_mat" : self.hn_lambda_mat の値

  • "hn_alpha" : self.hn_alpha の値

  • "hn_beta" : self.hn_beta の値

update_posterior(x, y)#

訓練データを使って事後分布のハイパーパラメータを更新します。

パラメータ:
xnumpy ndarray

浮動小数点数配列です。最後の次元のサイズはc_degreeと一致する必要があります。定数項を使用したい場合は、xに含める必要があります。

ynumpy ndarray

浮動小数点数配列。

estimate_params(loss='squared', dict_out=False)#

与えられた基準の下で、確率的データ生成モデルのパラメータを推定します。

なお、この基準は「theta_vec」と「tau」をそれぞれ独立して推定する際に適用されます。したがって、loss="KL"の場合、スチューデントのt分布とガンマ分布の組が返されます。

パラメータ:
lossstr, optional

ベイズリスク関数の基礎となる損失関数、デフォルトは "squared"。この関数は "squared"、"0-1"、"abs"、"KL "をサポートしています。

dict_outbool, optional

If True, output will be a dict, by default False.

返り値:
estimatestuple of {numpy ndarray, float, None, or rv_frozen}
  • theta_vec : w の推定値

  • tau_hat : tau の推定値

与えられた損失関数の下での推定値。存在しない場合は None が返されます。損失関数が "KL" の場合、事後分布そのものが scipy.stats の rv_frozen オブジェクトとして返されます。

visualize_posterior()#

パラメータの事後分布を可視化します。

例

>>> from bayesml import linearregression
>>> gen_model = linearregression.GenModel(c_degree=2,theta_vec=np.array([1,1]),tau=1.0)
>>> x,y = gen_model.gen_sample(sample_size=50)
>>> learn_model = linearregression.LearnModel()
>>> learn_model.update_posterior(x,y)
>>> learn_model.visualize_posterior()
_images/linearregression_posterior.png
get_p_params()#

予測分布のパラメータを取得します。

返り値:
p_paramsdict of {str: numpy ndarray}
  • "p_ms" : self.p_ms の値

  • "p_lambdas" : self.p_lambdas の値

  • "p_nus" : self.p_nus の値

calc_pred_dist(x)#

予測分布のパラメータを計算します。

パラメータ:
xnumpy ndarray

浮動小数点数配列です。最後の次元のサイズはc_degreeと一致する必要があります。定数項を使用したい場合は、xに含める必要があります。

make_prediction(loss='squared')#

与えられた基準の下で、新しいデータ点を予測します。

パラメータ:
lossstr, optional

ベイズリスク関数の基礎となる損失関数、デフォルトは "squared"。この関数は "squared"、"0-1"、"abs"、"KL "をサポートしています。

返り値:
Predicted_values{numpy ndarray, rv_frozen}

指定された損失関数に基づく予測値です。予測値のサイズは、calc_pred_dist(x) を呼び出した際の x のサンプルサイズと同じです。損失関数が「KL」の場合、予測分布そのものが scipy.stats の rv_frozen オブジェクトとして返されます。この rv_frozen オブジェクトはブロードキャスティングをサポートしています。

pred_and_update(x, y, loss='squared')#

逐次的に新しいデータを予測し、事後分布を更新

パラメータ:
xnumpy ndarray

浮動小数点数配列です。最後の次元のサイズはc_degreeと一致する必要があります。定数項を使用したい場合は、xに含める必要があります。

yfloat
lossstr, optional

ベイズリスク関数の基礎となる損失関数、デフォルトは "squared"。この関数は "squared"、"0-1"、"abs"、"KL "をサポートしています。

返り値:
Predicted_values{numpy ndarray, rv_frozen}

指定された損失関数に基づく予測値です。予測値のサイズは、calc_pred_dist(x) を呼び出した際の x のサンプルサイズと同じです。損失関数が「KL」の場合、予測分布そのものが scipy.stats の rv_frozen オブジェクトとして返されます。

calc_log_marginal_likelihood()#

対数周辺尤度の計算

返り値:
log_marginal_likelihoodfloat

対数周辺尤度

calc_pred_var()#

予測分布の分散を計算

返り値:
varsnumpy ndarray

予測分布の分散です。この分散のサイズは、calc_pred_dist(x) を呼び出した際の x のサンプルサイズと同じです。

fit(x, y)#

モデルをデータに当てはめます。

この関数は以下の関数のラッパーです:

>>> self.reset_hn_params()
>>> self.update_posterior(x,y)
>>> return self
パラメータ:
xnumpy ndarray

浮動小数点数配列です。最後の次元のサイズはc_degreeと一致する必要があります。定数項を使用したい場合は、xに含める必要があります。

ynumpy ndarray

浮動小数点数配列。

返り値:
selfLearnModel

The fitted model.

predict(x)#

データを予測

この関数は以下の関数のラッパーです:

>>> self.calc_pred_dist(x)
>>> return self.make_prediction(loss="squared")
パラメータ:
xnumpy ndarray

浮動小数点数配列です。最後の次元のサイズはc_degreeと一致する必要があります。定数項を使用したい場合は、xに含める必要があります。

返り値:
Predicted_valuesnumpy ndarray

二乗損失関数に基づく予測値です。予測値のサイズは、xのサンプルサイズと同じです。