RegressorChain#

class sklearn.multioutput.RegressorChain(base_estimator, *, order=None, cv=None, random_state=None, verbose=False)[原始碼]#

一種將迴歸排列成鏈的多標籤模型。

每個模型都使用提供給模型的所有可用特徵,加上鏈中較早模型的預測,按照鏈指定的順序進行預測。

請參閱使用者指南以了解更多資訊。

在 0.20 版本中加入。

參數:
base_estimator估計器

建構迴歸鏈的基礎估計器。

order形狀為 (n_outputs,) 或 'random' 的類陣列,預設為 None

如果為 None,則順序將由標籤矩陣 Y 中的列的順序決定。

order = [0, 1, 2, ..., Y.shape[1] - 1]

可以透過提供整數列表來明確設定鏈的順序。例如,對於長度為 5 的鏈。

order = [1, 3, 2, 4, 0]

表示鏈中的第一個模型將對 Y 矩陣中的第 1 列進行預測,第二個模型將對第 3 列進行預測,依此類推。

如果 order 為 'random',則將使用隨機排序。

cv整數、交叉驗證產生器或可迭代物件,預設為 None

決定是否使用交叉驗證預測或真實標籤作為鏈中先前估計器的結果。cv 的可能輸入為

  • None,在擬合時使用真實標籤,

  • 整數,指定 (Stratified)KFold 中的摺疊數,

  • CV 分割器,

  • 產生 (train, test) 分割作為索引陣列的可迭代物件。

random_state整數、RandomState 實例或 None,選用(預設為 None)

如果 order='random',則決定鏈順序的隨機數生成。此外,它還控制每個鏈接迭代中給定每個 base_estimator 的隨機種子。因此,它僅在 base_estimator 公開 random_state 時使用。傳遞一個整數以在多個函式呼叫中產生可重現的輸出。請參閱詞彙表

verbose布林值,預設為 False

如果為 True,則在每個模型完成時會輸出鏈進度。

在 1.2 版本中加入。

屬性:
estimators_列表

base_estimator 的複製清單。

order_列表

分類器鏈中標籤的順序。

n_features_in_整數

fit 期間看到的特徵數量。僅在底層 base_estimator 在擬合時公開此類屬性時才定義。

在 0.24 版本中加入。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

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

在 1.0 版本中加入。

另請參閱

ClassifierChain

分類的等效項。

MultiOutputRegressor

獨立學習每個輸出,而不是鏈接。

範例

>>> from sklearn.multioutput import RegressorChain
>>> from sklearn.linear_model import LogisticRegression
>>> logreg = LogisticRegression(solver='lbfgs')
>>> X, Y = [[1, 0], [0, 1], [1, 1]], [[0, 2], [1, 1], [2, 0]]
>>> chain = RegressorChain(base_estimator=logreg, order=[0, 1]).fit(X, Y)
>>> chain.predict(X)
array([[0., 2.],
       [1., 1.],
       [2., 0.]])
fit(X, Y, **fit_params)[原始碼]#

將模型擬合到資料矩陣 X 和目標 Y。

參數:
X形狀為 (n_samples, n_features) 的類陣列、稀疏矩陣

輸入資料。

Y形狀為 (n_samples, n_classes) 的類陣列

目標值。

**fit_params字串 -> 物件的字典

傳遞到迴歸鏈的每個步驟的 fit 方法的參數。

在 0.23 版本中加入。

傳回值:
self物件

傳回一個擬合的實例。

get_metadata_routing()[原始碼]#

取得此物件的元資料路由。

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

在 1.3 版本中加入。

傳回值:
routingMetadataRouter

封裝路由資訊的 MetadataRouter

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

取得此估計器的參數。

參數:
deep布林值,預設為 True

如果為 True,則會傳回此估計器的參數以及包含的子物件(估計器)。

傳回值:
params字典

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

predict(X)[原始碼]#

使用 ClassifierChain 模型預測資料矩陣 X。

參數:
X形狀為 (n_samples, n_features) 的類陣列、稀疏矩陣

輸入資料。

傳回值:
Y_pred形狀為 (n_samples, n_classes) 的類陣列

預測值。

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

樣本權重。

傳回值:
score浮點數 (float)

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

注意事項

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

set_params(**params)[來源]#

設定此估計器的參數。

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

參數:
**params字典 (dict)

估計器參數。

傳回值:
self估計器實例

估計器實例。

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

請求傳遞給 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

用於 score 中的 sample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。