TransformedTargetRegressor#

class sklearn.compose.TransformedTargetRegressor(regressor=None, *, transformer=None, func=None, inverse_func=None, check_inverse=True)[來源]#

用於對轉換後的目標進行回歸的元估計器。

適用於對迴歸問題中的目標 y 應用非線性轉換。此轉換可以是以 Transformer 形式給定,例如 QuantileTransformer,也可以是以函式及其反函式形式給定,例如 np.lognp.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 衍生而來的物件。不能與 funcinverse_func 同時設定。如果 transformer is None 以及 funcinverse_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_transformfunc 後接 inverse_func 是否會產生原始目標。

屬性:
regressor_物件

已擬合的迴歸器。

transformer_物件

fitpredict 中使用的轉換器。

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

參數名稱對應到其值。

屬性 n_features_in_#

fit 期間看到的特徵數量。

predict(X, **predict_params)[原始碼]#

使用基礎迴歸器進行預測,並套用反轉換。

迴歸器用於預測,並在回傳預測結果之前套用 inverse_funcinverse_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

scoresample_weight 參數的中繼資料路由。

回傳值:
self物件

更新後的物件。