交叉驗證預測#

sklearn.model_selection.cross_val_predict(estimator, X, y=None, *, groups=None, cv=None, n_jobs=None, verbose=0, params=None, pre_dispatch='2*n_jobs', method='predict')[來源]#

為每個輸入資料點產生交叉驗證估計。

資料根據 cv 參數分割。每個樣本恰好屬於一個測試集,並且其預測是使用在對應訓練集上擬合的估計器計算的。

將這些預測傳遞到評估指標可能不是衡量泛化性能的有效方法。結果可能與 cross_validatecross_val_score 不同,除非所有測試集大小相等且指標分解為樣本。

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

參數:
estimator估計器

用於擬合資料的估計器實例。它必須實作 fit 方法和 method 參數給定的方法。

X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣

要擬合的資料。例如,可以是列表,或至少是 2 維的陣列。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列或稀疏矩陣,預設為 None

在監督式學習的情況下,要嘗試預測的目標變數。

groups形狀為 (n_samples,) 的類陣列,預設為 None

在將資料集分割為訓練/測試集時使用的樣本群組標籤。僅與「群組」cv 實例(例如,GroupKFold)結合使用。

1.4 版變更:如果未透過 sklearn.set_config(enable_metadata_routing=True) 啟用中繼資料路由,則只能傳遞 groups。啟用路由時,請透過 params 引數傳遞 groups 以及其他中繼資料。例如:cross_val_predict(..., params={'groups': groups})

cvint、交叉驗證產生器或可迭代物件,預設為 None

決定交叉驗證分割策略。cv 的可能輸入為

  • None,使用預設的 5 折交叉驗證,

  • int,指定 (Stratified)KFold 中的折數,

  • CV 分割器,

  • 產生 (訓練、測試) 分割作為索引陣列的可迭代物件。

對於 int/None 輸入,如果估計器是分類器且 y 是二元或多類別,則使用 StratifiedKFold。在所有其他情況下,使用 KFold。這些分割器使用 shuffle=False 實例化,因此分割在呼叫之間將會相同。

請參閱 使用者指南,了解可在此處使用的各種交叉驗證策略。

0.22 版變更:如果為 None,cv 的預設值從 3 折變更為 5 折。

n_jobsint,預設為 None

要平行執行的作業數量。估計器的訓練和預測會在交叉驗證分割上平行化。None 表示 1,除非在 joblib.parallel_backend 環境中。-1 表示使用所有處理器。請參閱 詞彙表 以取得更多詳細資訊。

verboseint,預設為 0

詳細程度。

paramsdict,預設為 None

要傳遞給底層估計器的 fit 和 CV 分割器的參數。

在 1.4 版中新增。

pre_dispatchint 或 str,預設為 '2*n_jobs'

控制平行執行期間調度的作業數量。當調度的作業多於 CPU 可以處理的作業時,減少此數量有助於避免記憶體消耗暴增。此參數可以是

  • None,在此情況下,會立即建立和產生所有作業。將此用於輕量級且快速執行的作業,以避免因隨選產生作業而導致的延遲

  • 一個 int,給出所產生的作業總數

  • 一個 str,給出一個以 n_jobs 為函數的表達式,如 '2*n_jobs'

method{‘predict’、‘predict_proba’、‘predict_log_proba’、‘decision_function’},預設為 'predict'

要由 estimator 叫用的方法。

回傳值
predictionsndarray

這是呼叫 method 的結果。形狀為

  • method 為 'predict' 且在特殊情況下 method 為 'decision_function' 且目標為二元時:(n_samples,)

  • method 為 {‘predict_proba’, ‘predict_log_proba’, ‘decision_function’} 其中之一時(除非是上述特殊情況):(n_samples, n_classes)

  • 如果 estimator多輸出 (multioutput),則會在上述每個形狀的末尾添加一個額外的維度 'n_outputs'。

參見

cross_val_score

計算每個 CV 分割的分數。

cross_validate

計算每個 CV 分割的一個或多個分數和時間。

注意事項

在訓練部分中缺少一個或多個類別的情況下,如果 method 為每個類別生成列,例如在 {‘decision_function’, ‘predict_proba’, ‘predict_log_proba’} 中,則需要為該類別的所有實例分配一個預設分數。對於 predict_proba,此值為 0。為了確保有限的輸出,在其他情況下,我們將負無窮大近似為 dtype 的最小有限浮點值。

範例

>>> from sklearn import datasets, linear_model
>>> from sklearn.model_selection import cross_val_predict
>>> diabetes = datasets.load_diabetes()
>>> X = diabetes.data[:150]
>>> y = diabetes.target[:150]
>>> lasso = linear_model.Lasso()
>>> y_pred = cross_val_predict(lasso, X, y, cv=3)