TransformedTargetRegressor#
- class sklearn.compose.TransformedTargetRegressor(regressor=None, *, transformer=None, func=None, inverse_func=None, check_inverse=True)[來源]#
用於對轉換後的目標進行回歸的元估計器。
適用於對迴歸問題中的目標
y
應用非線性轉換。此轉換可以是以 Transformer 形式給定,例如QuantileTransformer
,也可以是以函式及其反函式形式給定,例如np.log
和np.exp
。在
fit
期間的計算如下:regressor.fit(X, func(y))
或
regressor.fit(X, transformer.transform(y))
在
predict
期間的計算如下:inverse_func(regressor.predict(X))
或
transformer.inverse_transform(regressor.predict(X))
請參閱使用者指南以了解更多資訊。
在 0.20 版本中新增。
- 參數:
- regressor物件,預設值=None
迴歸器物件,例如從
RegressorMixin
衍生而來的物件。此迴歸器會在每次擬合之前自動複製。如果regressor is None
,則會建立並使用LinearRegression
。- transformer物件,預設值=None
估算器物件,例如從
TransformerMixin
衍生而來的物件。不能與func
和inverse_func
同時設定。如果transformer is None
以及func
和inverse_func
,則轉換器將會是恆等轉換器。請注意,轉換器會在擬合期間複製。此外,轉換器會限制y
為 numpy 陣列。- func函式,預設值=None
在傳遞給
fit
之前,要套用於y
的函式。不能與transformer
同時設定。如果func is None
,則使用的函式將會是恆等函式。如果設定了func
,則也需要提供inverse_func
。此函式需要回傳一個二維陣列。- inverse_func函式,預設值=None
要套用於迴歸器預測的函式。不能與
transformer
同時設定。反函式用於將預測值回傳到原始訓練標籤的相同空間。如果設定了inverse_func
,則也需要提供func
。反函式需要回傳一個二維陣列。- check_inverse布林值,預設值=True
是否檢查
transform
後接inverse_transform
或func
後接inverse_func
是否會產生原始目標。
- 屬性:
- regressor_物件
已擬合的迴歸器。
- transformer_物件
n_features_in_
整數在 fit 期間看到的特徵數量。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。只有當
X
具有全部為字串的特徵名稱時,才會定義此屬性。在 1.0 版本中新增。
另請參閱
sklearn.preprocessing.FunctionTransformer
從任意可調用物件建構轉換器。
注意事項
在內部,目標
y
總是會轉換為二維陣列,以供 scikit-learn 轉換器使用。在預測時,輸出將會被重新塑形,使其具有與y
相同的維度數量。範例
>>> import numpy as np >>> from sklearn.linear_model import LinearRegression >>> from sklearn.compose import TransformedTargetRegressor >>> tt = TransformedTargetRegressor(regressor=LinearRegression(), ... func=np.log, inverse_func=np.exp) >>> X = np.arange(4).reshape(-1, 1) >>> y = np.exp(2 * X).ravel() >>> tt.fit(X, y) TransformedTargetRegressor(...) >>> tt.score(X, y) 1.0 >>> tt.regressor_.coef_ array([2.])
如需更詳細的使用案例範例,請參閱 迴歸模型中轉換目標的效果。
- fit(X, y, **fit_params)[原始碼]#
根據給定的訓練資料擬合模型。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣
訓練向量,其中
n_samples
是樣本數,而n_features
是特徵數。- y形狀為 (n_samples,) 的類陣列
目標值。
- **fit_params字典
如果
enable_metadata_routing=False
(預設值):直接傳遞至基礎迴歸器fit
方法的參數。如果
enable_metadata_routing=True
:安全地路由至基礎迴歸器fit
方法的參數。
1.6 版變更:詳情請參閱中繼資料路由使用者指南。
- 回傳值:
- self物件
已擬合的估算器。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查閱使用者指南,了解路由機制如何運作。
1.6 版新增。
- 回傳值:
- routingMetadataRouter
一個封裝路由資訊的
MetadataRouter
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設為 True
如果為 True,將回傳此估算器及其包含的子物件(為估算器)的參數。
- 回傳值:
- paramsdict
參數名稱對應到其值。
- predict(X, **predict_params)[原始碼]#
使用基礎迴歸器進行預測,並套用反轉換。
迴歸器用於預測,並在回傳預測結果之前套用
inverse_func
或inverse_transform
。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣
樣本。
- **predict_paramsstr -> object 的 dict
如果
enable_metadata_routing=False
(預設):參數直接傳遞給基礎迴歸器的predict
方法。如果
enable_metadata_routing=True
:參數安全地路由到基礎迴歸器的predict
方法。
1.6 版變更:詳情請參閱中繼資料路由使用者指南。
- 回傳值:
- y_hat形狀為 (n_samples,) 的 ndarray
預測值。
- 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) 的類陣列
測試樣本。對於某些估算器,這可能是一個預先計算的核心矩陣,或是一個形狀為
(n_samples, n_samples_fitted)
的通用物件列表,其中n_samples_fitted
是估算器擬合時使用的樣本數。- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列
用於
X
的真實值。- sample_weight形狀為 (n_samples,) 的類陣列,預設為 None
樣本權重。
- 回傳值:
- scorefloat
\(R^2\) 的
self.predict(X)
相對於y
的值。
注意事項
當在迴歸器上呼叫
score
時使用的 \(R^2\) 分數,自 0.23 版起使用multioutput='uniform_average'
,以與r2_score
的預設值保持一致。這會影響所有多輸出迴歸器的score
方法(除了MultiOutputRegressor
以外)。
- set_params(**params)[原始碼]#
設定此估算器的參數。
此方法適用於簡單的估算器,以及巢狀物件(例如
Pipeline
)。後者具有<component>__<parameter>
形式的參數,因此可以更新巢狀物件的每個組件。- 參數:
- **paramsdict
估算器的參數。
- 回傳值:
- self估算器實例
估算器實例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') TransformedTargetRegressor [原始碼]#
請求傳遞給
score
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱關於路由機制如何運作的使用者指南。每個參數的選項為:
True
:請求中繼資料,並且在提供時傳遞給score
。如果未提供中繼資料,則會忽略請求。False
:不請求中繼資料,並且 meta-estimator 不會將其傳遞給score
。None
:不請求中繼資料,並且如果使用者提供中繼資料,meta-estimator 將會引發錯誤。str
:中繼資料應使用給定的別名而不是原始名稱傳遞給 meta-estimator。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這可讓您變更某些參數的請求,而不變更其他參數的請求。1.3 版本新增。
注意
只有當此估算器用作 meta-estimator 的子估算器時,此方法才相關,例如在
Pipeline
內使用。否則沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
score
中sample_weight
參數的中繼資料路由。
- 回傳值:
- self物件
更新後的物件。