Pipeline#
- class sklearn.pipeline.Pipeline(steps, *, transform_input=None, memory=None, verbose=False)[source]#
一系列資料轉換器,並可選擇加入最終預測器。
Pipeline
允許您依序將轉換器列表應用於資料預處理,並且如果需要,可以將該序列以最終的預測器 作為預測模型的結尾。管道的中間步驟必須是轉換器 (transformers),也就是說,它們必須實作
fit
和transform
方法。最後的估計器 (estimator) 只需要實作fit
。管道中的轉換器可以使用memory
參數進行快取。管道的目的是將多個步驟組合在一起,以便在設定不同參數的同時進行交叉驗證。為此,它可以使用步驟名稱和參數名稱,並以
'__'
分隔的方式來設定各步驟的參數,如下例所示。步驟的估計器可以使用其名稱將參數設定為另一個估計器來完全替換,或者將其設定為'passthrough'
或None
來移除轉換器。有關
Pipeline
與GridSearchCV
結合使用的範例,請參考使用 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_steps
或steps
屬性來檢查管道中的估計器。當擬合耗時時,快取轉換器會很有幫助。- verbosebool,預設值=False
如果為 True,則在每個步驟完成時,將列印擬合每個步驟所經過的時間。
- 屬性:
named_steps
Bunch
依名稱存取步驟。
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_std
或return_cov
的不確定性,但管道中轉換所產生不確定性不會傳播到最終估算器。
- 傳回值:
- y_predndarray
在最終估算器上呼叫
fit_predict
的結果。
- fit_transform(X, y=None, **params)[原始碼]#
擬合模型並使用最終估算器轉換。
依序擬合所有轉換器,並依序轉換資料。僅當最終估算器實作
fit_transform
或fit
和transform
時才有效。- 參數:
- 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)[原始碼]#
取得此估計器的參數。
回傳建構子中給定的參數,以及
Pipeline
的steps
中包含的估計器。- 參數:
- 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_std
或return_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
設定
transform
和fit_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
用於
score
中sample_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
轉換後的資料。