PLSRegression#
- class sklearn.cross_decomposition.PLSRegression(n_components=2, *, scale=True, max_iter=500, tol=1e-06, copy=True)[原始碼]#
PLS迴歸。
PLSRegression 也稱為 PLS2 或 PLS1,具體取決於目標的數量。
如需比較其他交叉分解演算法,請參閱 比較交叉分解方法。
如需更多資訊,請參閱使用者指南。
版本 0.8 新增。
- 參數:
- n_componentsint, default=2
要保留的組件數量。應在
[1, n_features]
之間。- scalebool, default=True
是否要縮放
X
和Y
。- max_iterint, default=500
當
algorithm='nipals'
時,冪法 (power method) 的最大迭代次數。否則將忽略。- tolfloat, default=1e-06
在冪法中用作收斂標準的容差:當
u_i - u_{i-1}
的平方範數小於tol
時,演算法會停止,其中u
對應於左奇異向量。- copybool, default=True
是否在套用置中 (centering) 和可能縮放之前,在 fit 中複製
X
和Y
。如果為False
,這些操作將就地執行,修改兩個陣列。
- 屬性:
- x_weights_ndarray,形狀為 (n_features, n_components)
每次迭代的交叉共變異數矩陣的左奇異向量。
- y_weights_ndarray,形狀為 (n_targets, n_components)
每次迭代的交叉共變異數矩陣的右奇異向量。
- x_loadings_ndarray,形狀為 (n_features, n_components)
X
的載荷。- y_loadings_ndarray,形狀為 (n_targets, n_components)
Y
的載荷。- x_scores_ndarray,形狀為 (n_samples, n_components)
已轉換的訓練樣本。
- y_scores_ndarray,形狀為 (n_samples, n_components)
已轉換的訓練目標。
- x_rotations_ndarray,形狀為 (n_features, n_components)
用於轉換
X
的投影矩陣。- y_rotations_ndarray,形狀為 (n_targets, n_components)
用於轉換
Y
的投影矩陣。- coef_ndarray,形狀為 (n_target, n_features)
線性模型的係數,使得
Y
近似為Y = X @ coef_.T + intercept_
。- intercept_ndarray,形狀為 (n_targets,)
線性模型的截距,使得
Y
近似為Y = X @ coef_.T + intercept_
。版本 1.1 新增。
- n_iter_list,形狀為 (n_components,)
每個組件的冪法迭代次數。
- n_features_in_int
在 fit 期間看到的特徵數量。
- feature_names_in_ndarray,形狀為 (
n_features_in_
,) 在 fit 期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時才會定義。版本 1.0 新增。
範例
>>> from sklearn.cross_decomposition import PLSRegression >>> X = [[0., 0., 1.], [1.,0.,0.], [2.,2.,2.], [2.,5.,4.]] >>> y = [[0.1, -0.2], [0.9, 1.1], [6.2, 5.9], [11.9, 12.3]] >>> pls2 = PLSRegression(n_components=2) >>> pls2.fit(X, y) PLSRegression() >>> Y_pred = pls2.predict(X)
若要比較 PLS 迴歸和
PCA
,請參閱 主成分迴歸與部分最小平方迴歸。- fit(X, y=None, Y=None)[原始碼]#
將模型擬合到資料。
- 參數:
- X類陣列,形狀為 (n_samples, n_features)
訓練向量,其中
n_samples
是樣本數量,而n_features
是預測變數的數量。- y類陣列,形狀為 (n_samples,) 或 (n_samples, n_targets)
目標向量,其中
n_samples
是樣本數量,而n_targets
是回應變數的數量。- Y類陣列,形狀為 (n_samples,) 或 (n_samples, n_targets)
目標向量,其中
n_samples
是樣本數量,而n_targets
是回應變數的數量。自 1.5 版起已棄用:
Y
在 1.5 版中已棄用,並將在 1.7 版中移除。請改用y
。
- 傳回:
- self物件
擬合後的模型。
- fit_transform(X, y=None)[原始碼]#
學習並將降維應用於訓練資料。
- 參數:
- X類陣列,形狀為 (n_samples, n_features)
訓練向量,其中
n_samples
是樣本數量,而n_features
是預測變數的數量。- y類陣列,形狀為 (n_samples, n_targets),預設值為 None
目標向量,其中
n_samples
是樣本數量,而n_targets
是回應變數的數量。
- 傳回:
- selfndarray,形狀為 (n_samples, n_components)
如果未提供
Y
,則返回x_scores
,否則返回(x_scores, y_scores)
。
- get_feature_names_out(input_features=None)[原始碼]#
取得轉換後的輸出特徵名稱。
輸出特徵名稱會加上小寫的類別名稱作為前綴。例如,如果轉換器輸出 3 個特徵,則輸出特徵名稱為:
["class_name0", "class_name1", "class_name2"]
。- 參數:
- input_features類陣列的字串或 None,預設為 None
僅用於驗證特徵名稱是否與
fit
中看到的名稱相符。
- 傳回:
- feature_names_out字串物件的 ndarray
轉換後的特徵名稱。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看 使用者指南,了解路由機制如何運作。
- 傳回:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deep布林值,預設為 True
如果為 True,將返回此估算器和包含的子物件(也是估算器)的參數。
- 傳回:
- params字典
參數名稱對應到其值的字典。
- inverse_transform(X, y=None, Y=None)[原始碼]#
將資料轉換回原始空間。
- 參數:
- X類陣列,形狀為 (n_samples, n_components)
新資料,其中
n_samples
是樣本數,n_components
是 PLS 成分的數量。- y類陣列,形狀為 (n_samples,) 或 (n_samples, n_components)
新目標,其中
n_samples
是樣本數,n_components
是 PLS 成分的數量。- Y類陣列,形狀為 (n_samples, n_components)
新目標,其中
n_samples
是樣本數,n_components
是 PLS 成分的數量。自 1.5 版起已棄用:
Y
在 1.5 版中已棄用,並將在 1.7 版中移除。請改用y
。
- 傳回:
- X_reconstructedndarray,形狀為 (n_samples, n_features)
返回重建的
X
資料。- y_reconstructedndarray,形狀為 (n_samples, n_targets)
返回重建的
X
目標。只有在提供y
時才會返回。
備註
只有在
n_components=n_features
時,此轉換才是精確的。
- predict(X, copy=True)[原始碼]#
預測給定樣本的目標。
- 參數:
- X類陣列,形狀為 (n_samples, n_features)
樣本。
- copybool, default=True
是否複製
X
和Y
,或執行就地正規化。
- 傳回:
- y_predndarray,形狀為 (n_samples,) 或 (n_samples, n_targets)
返回預測值。
備註
此呼叫需要估計形狀為
(n_features, n_targets)
的矩陣,這在高維空間中可能是一個問題。
- 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
期望值,而忽略輸入特徵的常數模型,會得到 0.0 的 \(R^2\) 分數。- 參數:
- 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
樣本權重。
- 傳回:
- score浮點數
self.predict(X)
相對於y
的 \(R^2\)。
備註
當在回歸器上呼叫
score
時使用的 \(R^2\) 分數,會從 0.23 版開始使用multioutput='uniform_average'
,以保持與r2_score
的預設值一致。這會影響所有多輸出回歸器的score
方法(MultiOutputRegressor
除外)。
- set_output(*, transform=None)[原始碼]#
設定輸出容器。
請參閱 引入 set_output API,以了解如何使用 API 的範例。
- 參數:
- transform{“default”, “pandas”, “polars”},預設為 None
設定
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換設定未變更
在 1.4 版中新增:已新增
"polars"
選項。
- 傳回:
- self估算器實例
估算器實例。
- set_params(**params)[原始碼]#
設定此估算器的參數。
此方法適用於簡單的估算器以及巢狀物件(例如
Pipeline
)。後者具有<component>__<parameter>
形式的參數,因此可以更新巢狀物件的每個元件。- 參數:
- **params字典
估算器參數。
- 傳回:
- self估算器實例
估算器實例。
- set_predict_request(*, copy: bool | None | str = '$UNCHANGED$') PLSRegression [原始碼]#
請求傳遞給
predict
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時才相關(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制如何運作。每個參數的選項為:
True
:請求中繼資料,並在提供時傳遞給predict
。如果未提供中繼資料,則會忽略請求。False
:不請求中繼資料,且元估計器不會將其傳遞給predict
。None
:不請求中繼資料,如果使用者提供,元估計器會引發錯誤。str
:中繼資料應使用此給定的別名,而不是原始名稱傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這允許您更改某些參數的請求,而不是其他參數。新增於 1.3 版本。
注意
僅當此估計器用作元估計器的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何作用。- 參數:
- copystr、True、False 或 None,預設值 = sklearn.utils.metadata_routing.UNCHANGED
predict
中copy
參數的中繼資料路由。
- 傳回:
- self物件
更新後的物件。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') PLSRegression [原始碼]#
請求傳遞給
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物件
更新後的物件。
- set_transform_request(*, copy: bool | None | str = '$UNCHANGED$') PLSRegression [原始碼]#
請求傳遞給
transform
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時才相關(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制如何運作。每個參數的選項為:
True
:請求中繼資料,並在提供時傳遞給transform
。如果未提供中繼資料,則會忽略請求。False
:不請求中繼資料,且元估計器不會將其傳遞給transform
。None
:不請求中繼資料,如果使用者提供,元估計器會引發錯誤。str
:中繼資料應使用此給定的別名,而不是原始名稱傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這允許您更改某些參數的請求,而不是其他參數。新增於 1.3 版本。
注意
僅當此估計器用作元估計器的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何作用。- 參數:
- copystr、True、False 或 None,預設值 = sklearn.utils.metadata_routing.UNCHANGED
transform
中copy
參數的中繼資料路由。
- 傳回:
- self物件
更新後的物件。
- transform(X, y=None, Y=None, copy=True)[原始碼]#
套用降維。
- 參數:
- X類陣列,形狀為 (n_samples, n_features)
要轉換的樣本。
- y類陣列,形狀為 (n_samples, n_targets),預設值為 None
目標向量。
- Y形狀為 (n_samples, n_targets) 的類陣列,預設值 = None
目標向量。
自 1.5 版起已棄用:
Y
在 1.5 版中已棄用,並將在 1.7 版中移除。請改用y
。- copybool, default=True
是否複製
X
和Y
,或執行就地正規化。
- 傳回:
- x_scores, y_scores類陣列或類陣列的元組
如果未提供
Y
,則返回x_scores
,否則返回(x_scores, y_scores)
。