Pipeline#

class sklearn.pipeline.Pipeline(steps, *, transform_input=None, memory=None, verbose=False)[source]#

一系列資料轉換器,並可選擇加入最終預測器。

Pipeline 允許您依序將轉換器列表應用於資料預處理,並且如果需要,可以將該序列以最終的預測器 作為預測模型的結尾。

管道的中間步驟必須是轉換器 (transformers),也就是說,它們必須實作 fittransform 方法。最後的估計器 (estimator) 只需要實作 fit。管道中的轉換器可以使用 memory 參數進行快取。

管道的目的是將多個步驟組合在一起,以便在設定不同參數的同時進行交叉驗證。為此,它可以使用步驟名稱和參數名稱,並以 '__' 分隔的方式來設定各步驟的參數,如下例所示。步驟的估計器可以使用其名稱將參數設定為另一個估計器來完全替換,或者將其設定為 'passthrough'None 來移除轉換器。

有關 PipelineGridSearchCV 結合使用的範例,請參考使用 Pipeline 和 GridSearchCV 選擇降維。範例管道化:鏈接 PCA 和邏輯回歸 展示了如何在管道中使用 '__' 作為參數名稱的分隔符來進行網格搜尋。

請在 使用者指南 中閱讀更多內容。

在版本 0.5 中新增。

參數:
stepstuple 列表

要依序串聯的 (步驟名稱,估計器) tuple 列表。為了與 scikit-learn API 相容,所有步驟都必須定義 fit。所有非最後的步驟也必須定義 transform。有關更多詳細資訊,請參閱組合估計器

transform_inputstr 列表,預設值=None

在將 元數據 (metadata) 參數傳遞給使用它的步驟之前,應由管道轉換的元數據參數的名稱。

這可以讓管道中的步驟轉換傳遞給 fit 的某些輸入參數 (除了 X 以外),直到需要它們的步驟。需求是透過元數據路由定義的。例如,這可以用來通過管道傳遞驗證集。

只有在啟用元數據路由時才能設定此項,您可以使用 sklearn.set_config(enable_metadata_routing=True) 來啟用它。

在版本 1.6 中新增。

memory帶有 joblib.Memory 介面的 str 或物件,預設值=None

用於快取管道中已擬合的轉換器。即使最後一步是轉換器,也不會快取。預設情況下,不執行快取。如果給定字串,則它是快取目錄的路徑。啟用快取會觸發在擬合之前複製轉換器。因此,無法直接檢查給管道的轉換器實例。請使用 named_stepssteps 屬性來檢查管道中的估計器。當擬合耗時時,快取轉換器會很有幫助。

verbosebool,預設值=False

如果為 True,則在每個步驟完成時,將列印擬合每個步驟所經過的時間。

屬性:
named_stepsBunch

依名稱存取步驟。

classes_形狀為 (n_classes,) 的 ndarray

類別標籤。

n_features_in_整數

在第一步 fit 方法期間看到的特徵數量。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

在第一步 fit 方法期間看到的特徵名稱。

另請參閱

make_pipeline

簡化管道建構的便利函式。

範例

>>> from sklearn.svm import SVC
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.datasets import make_classification
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.pipeline import Pipeline
>>> X, y = make_classification(random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y,
...                                                     random_state=0)
>>> pipe = Pipeline([('scaler', StandardScaler()), ('svc', SVC())])
>>> # The pipeline can be used as any other estimator
>>> # and avoids leaking the test set into the train set
>>> pipe.fit(X_train, y_train).score(X_test, y_test)
0.88
>>> # An estimator's parameter can be set using '__' syntax
>>> pipe.set_params(svc__C=10).fit(X_train, y_train).score(X_test, y_test)
0.76
property classes_#

類別標籤。僅當最後一步是分類器時才存在。

decision_function(X, **params)[原始碼]#

轉換資料,並使用最終估計器套用 decision_function

呼叫管道中每個轉換器的 transform。轉換後的資料最終會傳遞給呼叫 decision_function 方法的最終估計器。僅當最終估計器實作 decision_function 時才有效。

參數:
X可迭代物件

要預測的資料。必須符合管道第一步驟的輸入要求。

**params**dict of string -> object

步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

1.4 版本新增:僅在 enable_metadata_routing=True 時可用。有關更多詳細資訊,請參閱 中繼資料路由使用者指南

傳回值:
y_score形狀為 (n_samples, n_classes) 的 ndarray

在最終估算器上呼叫 decision_function 的結果。

property feature_names_in_#

在第一步 fit 方法期間看到的特徵名稱。

fit(X, y=None, **params)[原始碼]#

擬合模型。

依序擬合所有轉換器,並依序轉換資料。最後,使用最終估算器擬合轉換後的資料。

參數:
X可迭代物件

訓練資料。必須符合管道第一步驟的輸入要求。

y可迭代物件,預設值 = None

訓練目標。必須符合管道所有步驟的標籤要求。

**params**dict of str -> object
  • 如果 enable_metadata_routing=False(預設值):傳遞給每個步驟的 fit 方法的參數,其中每個參數名稱都帶有前綴,因此步驟 s 的參數 p 具有索引鍵 s__p

  • 如果 enable_metadata_routing=True:步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

1.4 版本變更:如果已請求且透過 set_config 設定 enable_metadata_routing=True,參數現在也會傳遞給中間步驟的 transform 方法。

有關更多詳細資訊,請參閱 中繼資料路由使用者指南

傳回值:
selfobject

具有已擬合步驟的管道。

fit_predict(X, y=None, **params)[原始碼]#

轉換資料,並使用最終估算器套用 fit_predict

呼叫管道中每個轉換器的 fit_transform。轉換後的資料最後會傳遞給呼叫 fit_predict 方法的最終估算器。僅當最終估算器實作 fit_predict 時才有效。

參數:
X可迭代物件

訓練資料。必須符合管道第一步驟的輸入要求。

y可迭代物件,預設值 = None

訓練目標。必須符合管道所有步驟的標籤要求。

**params**dict of str -> object
  • 如果 enable_metadata_routing=False(預設值):在管道中所有轉換結束時呼叫的 predict 的參數。

  • 如果 enable_metadata_routing=True:步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

0.20 版本新增。

1.4 版本變更:如果已請求且 enable_metadata_routing=True,參數現在也會傳遞給中間步驟的 transform 方法。

有關更多詳細資訊,請參閱 中繼資料路由使用者指南

請注意,雖然這可用於從某些模型傳回具有 return_stdreturn_cov 的不確定性,但管道中轉換所產生不確定性不會傳播到最終估算器。

傳回值:
y_predndarray

在最終估算器上呼叫 fit_predict 的結果。

fit_transform(X, y=None, **params)[原始碼]#

擬合模型並使用最終估算器轉換。

依序擬合所有轉換器,並依序轉換資料。僅當最終估算器實作 fit_transformfittransform 時才有效。

參數:
X可迭代物件

訓練資料。必須符合管道第一步驟的輸入要求。

y可迭代物件,預設值 = None

訓練目標。必須符合管道所有步驟的標籤要求。

**params**dict of str -> object
  • 如果 enable_metadata_routing=False(預設值):傳遞給每個步驟的 fit 方法的參數,其中每個參數名稱都帶有前綴,因此步驟 s 的參數 p 具有索引鍵 s__p

  • 如果 enable_metadata_routing=True:步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

1.4 版本變更:如果已請求且 enable_metadata_routing=True,參數現在也會傳遞給中間步驟的 transform 方法。

有關更多詳細資訊,請參閱 中繼資料路由使用者指南

傳回值:
Xt形狀為 (n_samples, n_transformed_features) 的 ndarray

已轉換的樣本。

get_feature_names_out(input_features=None)[原始碼]#

取得轉換的輸出特徵名稱。

使用管道轉換輸入特徵。

參數:
input_features字串或 None 的類陣列物件,預設值 = None

輸入特徵。

傳回值:
feature_names_out字串物件的 ndarray

已轉換的特徵名稱。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看使用者指南,了解路由機制如何運作。

傳回值:
routingMetadataRouter

一個封裝路由資訊的 MetadataRouter

get_params(deep=True)[原始碼]#

取得此估計器的參數。

回傳建構子中給定的參數,以及 Pipelinesteps 中包含的估計器。

參數:
deepbool,預設值為 True

如果為 True,將回傳此估計器和包含的子物件(為估計器)的參數。

傳回值:
params字串到任意值的映射

參數名稱對應到其值的映射。

inverse_transform(X=None, *, Xt=None, **params)[原始碼]#

以相反的順序為每個步驟套用 inverse_transform

管道中的所有估計器都必須支援 inverse_transform

參數:
X形狀為 (n_samples, n_transformed_features) 的類陣列

資料樣本,其中 n_samples 是樣本數,而 n_features 是特徵數。必須滿足管道最後一個步驟的 inverse_transform 方法的輸入要求。

Xt形狀為 (n_samples, n_transformed_features) 的類陣列

資料樣本,其中 n_samples 是樣本數,而 n_features 是特徵數。必須滿足管道最後一個步驟的 inverse_transform 方法的輸入要求。

自 1.5 版本起已棄用:Xt 在 1.5 版本中已棄用,將在 1.7 版本中移除。請改用 X

**params**dict of str -> object

步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

1.4 版本新增:僅在 enable_metadata_routing=True 時可用。有關更多詳細資訊,請參閱 中繼資料路由使用者指南

傳回值:
Xt形狀為 (n_samples, n_features) 的 ndarray

反向轉換的資料,也就是原始特徵空間中的資料。

property n_features_in_#

在第一步 fit 方法期間看到的特徵數量。

property named_steps#

依名稱存取步驟。

唯讀屬性,可透過給定的名稱存取任何步驟。鍵為步驟名稱,值為步驟物件。

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

轉換資料,並使用最後的估計器套用 predict

呼叫管道中每個轉換器的 transform。轉換後的資料最終傳遞給呼叫 predict 方法的最後一個估計器。僅當最後一個估計器實作 predict 時有效。

參數:
X可迭代物件

要預測的資料。必須符合管道第一步驟的輸入要求。

**params**dict of str -> object
  • 如果 enable_metadata_routing=False(預設值):在管道中所有轉換結束時呼叫的 predict 的參數。

  • 如果 enable_metadata_routing=True:步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

0.20 版本新增。

1.4 版本變更:如果已請求且透過 set_config 設定 enable_metadata_routing=True,參數現在也會傳遞給中間步驟的 transform 方法。

有關更多詳細資訊,請參閱 中繼資料路由使用者指南

請注意,雖然這可用於從某些模型傳回具有 return_stdreturn_cov 的不確定性,但管道中轉換所產生不確定性不會傳播到最終估算器。

傳回值:
y_predndarray

呼叫最後一個估計器的 predict 的結果。

predict_log_proba(X, **params)[原始碼]#

轉換資料,並使用最後的估計器套用 predict_log_proba

呼叫管道中每個轉換器的 transform。轉換後的資料最終傳遞給呼叫 predict_log_proba 方法的最後一個估計器。僅當最後一個估計器實作 predict_log_proba 時有效。

參數:
X可迭代物件

要預測的資料。必須符合管道第一步驟的輸入要求。

**params**dict of str -> object
  • 如果 enable_metadata_routing=False (預設):在管道中所有轉換結束時呼叫的 predict_log_proba 的參數。

  • 如果 enable_metadata_routing=True:步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

0.20 版本新增。

1.4 版本變更:如果已請求且 enable_metadata_routing=True,參數現在也會傳遞給中間步驟的 transform 方法。

有關更多詳細資訊,請參閱 中繼資料路由使用者指南

傳回值:
y_log_proba形狀為 (n_samples, n_classes) 的 ndarray

呼叫最後一個估計器的 predict_log_proba 的結果。

predict_proba(X, **params)[原始碼]#

轉換資料,並使用最後的估計器套用 predict_proba

呼叫管道中每個轉換器的 transform。轉換後的資料最終傳遞給呼叫 predict_proba 方法的最後一個估計器。僅當最後一個估計器實作 predict_proba 時有效。

參數:
X可迭代物件

要預測的資料。必須符合管道第一步驟的輸入要求。

**params**dict of str -> object
  • 如果 enable_metadata_routing=False (預設):在管道中所有轉換結束時呼叫的 predict_proba 的參數。

  • 如果 enable_metadata_routing=True:步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

0.20 版本新增。

1.4 版本變更:如果已請求且 enable_metadata_routing=True,參數現在也會傳遞給中間步驟的 transform 方法。

有關更多詳細資訊,請參閱 中繼資料路由使用者指南

傳回值:
y_proba形狀為 (n_samples, n_classes) 的 ndarray

呼叫最後一個估計器的 predict_proba 的結果。

score(X, y=None, sample_weight=None, **params)[原始碼]#

轉換資料,並使用最終的估計器套用 score

呼叫管道中每個轉換器的 transform。轉換後的資料最終會傳遞給呼叫 score 方法的最終估計器。僅在最終估計器實作 score 時有效。

參數:
X可迭代物件

要預測的資料。必須符合管道第一步驟的輸入要求。

y可迭代物件,預設值 = None

用於評分的目標。必須滿足管道所有步驟的標籤要求。

sample_weight類陣列,預設值=None

如果不是 None,則此參數將作為 sample_weight 關鍵字參數傳遞給最終估計器的 score 方法。

**params**dict of str -> object

步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

1.4 版本新增:僅在 enable_metadata_routing=True 時可用。有關更多詳細資訊,請參閱 中繼資料路由使用者指南

傳回值:
score浮點數

在最終估計器上呼叫 score 的結果。

score_samples(X)[原始碼]#

轉換資料,並使用最終的估計器套用 score_samples

呼叫管道中每個轉換器的 transform。轉換後的資料最終會傳遞給呼叫 score_samples 方法的最終估計器。僅在最終估計器實作 score_samples 時有效。

參數:
X可迭代物件

要預測的資料。必須符合管道第一步驟的輸入要求。

傳回值:
y_score形狀為 (n_samples,) 的 ndarray

在最終估計器上呼叫 score_samples 的結果。

set_output(*, transform=None)[原始碼]#

設定呼叫 "transform""fit_transform" 時的輸出容器。

呼叫 set_output 將設定 steps 中所有估計器的輸出。

參數:
transform{“default”, “pandas”, “polars”},預設值=None

設定 transformfit_transform 的輸出。

  • "default":轉換器的預設輸出格式

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換配置不變

1.4 版本新增: 新增了 "polars" 選項。

傳回值:
self估計器實例

估計器實例。

set_params(**kwargs)[原始碼]#

設定此估計器的參數。

可以使用 get_params() 列出有效的參數鍵。請注意,您可以直接設定 steps 中包含的估計器的參數。

參數:
**kwargs字典

此估計器的參數,或 steps 中包含的估計器的參數。可以使用步驟的名稱和參數名稱 (以 '__' 分隔) 設定步驟的參數。

傳回值:
selfobject

Pipeline 類別實例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') Pipeline[原始碼]#

請求傳遞給 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 參數的中繼資料路由。

傳回值:
selfobject

已更新的物件。

transform(X, **params)[原始碼]#

轉換資料,並使用最終估算器套用 transform

呼叫管線中每個轉換器的 transform。轉換後的資料最終會傳遞給最終估算器,該估算器會呼叫 transform 方法。僅當最終估算器實作 transform 時才有效。

這也適用於最終估算器為 None 的情況,在這種情況下,所有先前的轉換都會被應用。

參數:
X可迭代物件

要轉換的資料。必須滿足管線第一步的輸入要求。

**params**dict of str -> object

步驟所請求和接受的參數。每個步驟都必須已請求某些中繼資料,以便將這些參數轉發給它們。

1.4 版本新增:僅在 enable_metadata_routing=True 時可用。有關更多詳細資訊,請參閱 中繼資料路由使用者指南

傳回值:
Xt形狀為 (n_samples, n_transformed_features) 的 ndarray

轉換後的資料。