ARDRegression#

class sklearn.linear_model.ARDRegression(*, max_iter=300, tol=0.001, alpha_1=1e-06, alpha_2=1e-06, lambda_1=1e-06, lambda_2=1e-06, compute_score=False, threshold_lambda=10000.0, fit_intercept=True, copy_X=True, verbose=False)[原始碼]#

貝氏 ARD 迴歸。

使用 ARD 先驗機率,擬合迴歸模型的權重。迴歸模型的權重假設為高斯分佈。同時估計參數 lambda (權重分佈的精確度) 和 alpha (雜訊分佈的精確度)。估計通過迭代程序 (證據最大化) 完成。

請在使用者指南中閱讀更多資訊。

參數:
max_iterint,預設值=300

最大迭代次數。

於 1.3 版本變更。

tolfloat,預設值=1e-3

如果 w 已收斂,則停止演算法。

alpha_1float,預設值=1e-6

超參數:alpha 參數的 Gamma 分佈先驗的形狀參數。

alpha_2float,預設值=1e-6

超參數:alpha 參數的 Gamma 分佈先驗的反向尺度參數(速率參數)。

lambda_1float,預設值=1e-6

超參數:lambda 參數的 Gamma 分佈先驗的形狀參數。

lambda_2float,預設值=1e-6

超參數:lambda 參數的 Gamma 分佈先驗的反向尺度參數(速率參數)。

compute_scorebool,預設值=False

如果為 True,則計算模型每一步的目標函數。

threshold_lambdafloat,預設值=10 000

用於從計算中移除(剪枝)具有高精確度的權重的閾值。

fit_interceptbool,預設值=True

是否計算此模型的截距。如果設定為 false,則計算中將不使用截距 (即預期資料已居中)。

copy_Xbool,預設值=True

如果為 True,則將複製 X;否則,可能會覆寫 X。

verbosebool,預設值=False

擬合模型時的詳細模式。

屬性:
coef_形狀為 (n_features,) 的類陣列

迴歸模型的係數 (分佈的平均值)

alpha_float

雜訊的估計精確度。

lambda_形狀為 (n_features,) 的類陣列

權重的估計精確度。

sigma_形狀為 (n_features, n_features) 的類陣列

權重的估計變異數-共變異數矩陣

scores_float

如果已計算,則為目標函數的值 (要最大化)

n_iter_int

達到停止條件的實際迭代次數。

於 1.3 版本新增。

intercept_float

決策函數中的獨立項。如果 fit_intercept = False,則設定為 0.0。

X_offset_float

如果 fit_intercept=True,則為減去以將資料居中為零平均值的偏移量。否則設定為 np.zeros(n_features)。

X_scale_float

設定為 np.ones(n_features)。

n_features_in_int

fit 期間看到的特徵數量。

於 0.24 版本新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有都是字串的特徵名稱時才定義。

於 1.0 版本新增。

另請參閱

BayesianRidge

貝氏嶺迴歸。

註解

如需範例,請參閱examples/linear_model/plot_ard.py

參考文獻

D. J. C. MacKay, Bayesian nonlinear modeling for the prediction competition, ASHRAE Transactions, 1994.

R. Salakhutdinov, Lecture notes on Statistical Machine Learning, http://www.utstat.toronto.edu/~rsalakhu/sta4273/notes/Lecture2.pdf#page=15 其 beta 是我們的 self.alpha_ 其 alpha 是我們的 self.lambda_ ARD 與投影片略有不同:僅保留 self.lambda_ < self.threshold_lambda 的維度/特徵,其餘則捨棄。

範例

>>> from sklearn import linear_model
>>> clf = linear_model.ARDRegression()
>>> clf.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])
ARDRegression()
>>> clf.predict([[1, 1]])
array([1.])
fit(X, y)[原始碼]#

根據給定的訓練資料和參數擬合模型。

最大化證據的迭代過程

參數:
X形狀為 (n_samples, n_features) 的類陣列 (array-like)

訓練向量,其中 n_samples 是樣本數,而 n_features 是特徵數。

y形狀為 (n_samples,) 的類陣列 (array-like)

目標值(整數)。如有必要,將會轉換為 X 的 dtype。

回傳值:
self物件

已擬合的估計器。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看 使用者指南,了解路由機制如何運作。

回傳值:
routingMetadataRequest

一個 MetadataRequest,封裝了路由資訊。

get_params(deep=True)[原始碼]#

取得此估計器的參數。

參數:
deepbool,預設值為 True

如果為 True,將回傳此估計器和所包含的子物件(也是估計器)的參數。

回傳值:
paramsdict

參數名稱對應到它們的值。

predict(X, return_std=False)[原始碼]#

使用線性模型進行預測。

除了預測分佈的平均值之外,也可以回傳其標準差。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列 (array-like), 稀疏矩陣}

樣本。

return_stdbool,預設值為 False

是否回傳後驗預測的標準差。

回傳值:
y_mean形狀為 (n_samples,) 的類陣列 (array-like)

查詢點預測分佈的平均值。

y_std形狀為 (n_samples,) 的類陣列 (array-like)

查詢點預測分佈的標準差。

score(X, y, sample_weight=None)[原始碼]#

回傳預測的決定係數。

決定係數 \(R^2\) 定義為 \((1 - \frac{u}{v})\),其中 \(u\) 是殘差平方和 ((y_true - y_pred)** 2).sum(),而 \(v\) 是總平方和 ((y_true - y_true.mean()) ** 2).sum()。最佳可能分數是 1.0,且可以是負數(因為模型可能會任意地變差)。一個總是預測 y 的期望值的常數模型,而忽略輸入特徵,會得到 \(R^2\) 分數 0.0。

參數:
X形狀為 (n_samples, n_features) 的類陣列 (array-like)

測試樣本。對於某些估計器,這可能是一個預先計算的核心矩陣,或是一個形狀為 (n_samples, n_samples_fitted) 的通用物件列表,其中 n_samples_fitted 是估計器擬合時使用的樣本數。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列 (array-like)

X 的真實值。

sample_weight形狀為 (n_samples,) 的類陣列 (array-like),預設值為 None

樣本權重。

回傳值:
scorefloat

self.predict(X) 相對於 y\(R^2\)

註解

在迴歸器上呼叫 score 時使用的 \(R^2\) 分數,從 0.23 版開始使用 multioutput='uniform_average',以保持與 r2_score 的預設值一致。這會影響所有多輸出迴歸器的 score 方法(除了 MultiOutputRegressor)。

set_params(**params)[原始碼]#

設定此估計器的參數。

此方法適用於簡單的估計器,也適用於巢狀物件(例如 Pipeline)。後者的參數形式為 <component>__<parameter>,因此可以更新巢狀物件的每個組件。

參數:
**params**dict

估算器參數。

回傳值:
self估算器實例

估算器實例。

set_predict_request(*, return_std: bool | None | str = '$UNCHANGED$') ARDRegression[來源]#

請求傳遞到 predict 方法的中繼資料。

請注意,只有在 enable_metadata_routing=True 時此方法才相關(請參閱 sklearn.set_config)。請參閱關於路由機制如何運作的 使用者指南

每個參數的選項如下:

  • True:請求中繼資料,如果提供則傳遞給 predict。如果未提供中繼資料,則忽略該請求。

  • False:不請求中繼資料,並且元估算器不會將其傳遞給 predict

  • None:不請求中繼資料,如果使用者提供中繼資料,則元估算器會引發錯誤。

  • str:應該使用此給定的別名而不是原始名稱將中繼資料傳遞給元估算器。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這允許您更改某些參數的請求,而其他參數則不更改。

於 1.3 版本新增。

注意

只有當此估算器用作元估算器的子估算器時,此方法才相關,例如在 Pipeline 內部使用。否則它沒有任何作用。

參數:
return_stdstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED

predictreturn_std 參數的中繼資料路由。

回傳值:
self物件

更新後的物件。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') ARDRegression[來源]#

請求傳遞到 score 方法的中繼資料。

請注意,只有在 enable_metadata_routing=True 時此方法才相關(請參閱 sklearn.set_config)。請參閱關於路由機制如何運作的 使用者指南

每個參數的選項如下:

  • True:請求中繼資料,如果提供則傳遞給 score。如果未提供中繼資料,則忽略該請求。

  • False:不請求中繼資料,並且元估算器不會將其傳遞給 score

  • None:不請求中繼資料,如果使用者提供中繼資料,則元估算器會引發錯誤。

  • str:應該使用此給定的別名而不是原始名稱將中繼資料傳遞給元估算器。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這允許您更改某些參數的請求,而其他參數則不更改。

於 1.3 版本新增。

注意

只有當此估算器用作元估算器的子估算器時,此方法才相關,例如在 Pipeline 內部使用。否則它沒有任何作用。

參數:
sample_weightstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED

scoresample_weight 參數的中繼資料路由。

回傳值:
self物件

更新後的物件。