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 中的摺疊數,
產生 (train, test) 分割作為索引陣列的可迭代物件。
- random_state整數、RandomState 實例或 None,選用(預設為 None)
如果
order='random'
,則決定鏈順序的隨機數生成。此外,它還控制每個鏈接迭代中給定每個base_estimator
的隨機種子。因此,它僅在base_estimator
公開random_state
時使用。傳遞一個整數以在多個函式呼叫中產生可重現的輸出。請參閱詞彙表。- verbose布林值,預設為 False
如果為 True,則在每個模型完成時會輸出鏈進度。
在 1.2 版本中加入。
- 屬性:
另請參閱
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物件
更新後的物件。