sklearn.model_selection.cross_val_score?

sklearn.model_selection.cross_val_score(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, fit_params=None, pre_dispatch='2*n_jobs', error_score=nan)

[源碼]

通過交叉驗證評估準確率

用戶指南中閱讀更多內容。

參數 說明
estimator estimator object implementing ‘fit’
用于擬合數據的對象。
X array-like of shape (n_samples, n_features)
用于擬合的數據。例如可以是一個列表或數組。
y array-like of shape (n_samples,) or (n_samples, n_outputs), default=None
在監督學習的情況下要嘗試預測的目標變量。
groups array-like of shape (n_samples,), default=None
將數據集切分為訓練集或測試集時使用的樣本的分組標簽。僅與“ Group” cv 實例(例如GroupKFold)結合使用。
scoring 一個str(參見模型評估文檔)或一個信息為scorer(estimator, X, y)的可調用對象或函數的評分器,它應該只返回一個值。

cross_validate類似, 但只允許使用一個指標。

如果為None,則使用估計器的默認評分器(如果可用)。
cv int, cross-validation generator or an iterable, default=None
確定交叉驗證切分策略。cv值可以輸入:

- None,默認使用5折交叉驗證
- int,用于指定(Stratified)KFold的折數
- CV splitter,
- 可迭代輸出訓練集和測試集的切分作為索引數組

對于int或 None輸入,如果估計器是分類器,并且y是二分類或多分類,則使用StratifiedKFold。在所有其他情況下,均使用KFold

有關可在此處使用的各種交叉驗證策略,請參閱用戶指南

在版本0.22中:如果cv為None,默認從3折更改為5折。
n_jobs int, default=None
用于進行計算的CPU數量。 None除非在joblib.parallel_backend環境中,否則表示1 。 -1表示使用所有處理器。有關更多詳細信息,請參見詞匯表
verbose int, default=0
詳細程度。
fit_params dict, default=None
傳遞給估計器fit方法的參數。
pre_dispatch int or str, default=’2*n_jobs’
控制在并行執行期間分派的CPU內核數。當調度的CPU內核數量超過CPU的處理能力時,減少此數量可能有助于避免內存消耗激增。該參數可以是:

- None,在這種情況下,所有CPU內核都將立即創建并產生,使它進行輕量級和快速運行的任務,以避免因按需生成作業而造成延遲
-int,給出所產生的總CPU內核數的確切數量
-str,根據n_jobs給出表達式,如'2*n_jobs'
error_score ‘raise’ or numeric, default=np.nan
估計器擬合出現錯誤時,分配給分數的值。如果設置為“ raise”,則會引發錯誤。如果給出數值,則引發FitFailedWarning。此參數不會影響重新擬合步驟,這將總是引發錯誤。

0.20版中的新功能。
返回值 說明
scores array of float, shape=(len(list(cv)),)
每次交叉驗證運行時估算器得分的數組。

另見:

sklearn.model_selection.cross_validate 在多個指標上進行交叉驗證,并返回訓練集準確率、擬合時間和評分時間。

sklearn.model_selection.cross_val_predict 從交叉驗證的每個切分中獲取預測,用于診斷。

sklearn.metrics.make_scorer 根據績效指標或損失函數確定評分器。

>>> from sklearn import datasets, linear_model
>>> from sklearn.model_selection import cross_val_score
>>> diabetes = datasets.load_diabetes()
>>> X = diabetes.data[:150]
>>> y = diabetes.target[:150]
>>> lasso = linear_model.Lasso()
>>> print(cross_val_score(lasso, X, y, cv=3))
[0.33150734 0.08022311 0.03531764]