交叉驗證預測#
- 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_validate
和cross_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
中的折數,產生 (訓練、測試) 分割作為索引陣列的可迭代物件。
對於 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)