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

是否要縮放 XY

max_iterint, default=500

algorithm='nipals' 時,冪法 (power method) 的最大迭代次數。否則將忽略。

tolfloat, default=1e-06

在冪法中用作收斂標準的容差:當 u_i - u_{i-1} 的平方範數小於 tol 時,演算法會停止,其中 u 對應於左奇異向量。

copybool, default=True

是否在套用置中 (centering) 和可能縮放之前,在 fit 中複製 XY。如果為 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

是否複製 XY,或執行就地正規化。

傳回:
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

設定 transformfit_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

predictcopy 參數的中繼資料路由。

傳回:
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

scoresample_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

transformcopy 參數的中繼資料路由。

傳回:
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

是否複製 XY,或執行就地正規化。

傳回:
x_scores, y_scores類陣列或類陣列的元組

如果未提供 Y,則返回 x_scores,否則返回 (x_scores, y_scores)