sklearn.model_selection.cross_validate?

sklearn.model_selection.cross_validate(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, fit_params=None, pre_dispatch='2*n_jobs', return_train_score=False, return_estimator=False, 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, callable, list/tuple, or dict, default=None
單個str(請參閱評分參數:定義模型評估規則)或可調用項(請參閱從度量函數定義評分策略)用于評估測試集上的預測。

要評估多個指標,請給出(唯一的)字符串列表或以名稱為鍵,可調用項為值的字典。

注意,使用自定義評分器時,每個評分器應返回一個值。返回值列表或數組的度量函數可以包裝到多個評分器中,每個評分器都返回一個值。

有關示例,請參閱指定多個度量進行評估

如果為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的處理能力時,減少此數量可能有助于避免內存消耗激增。該參數可以是:

-None,在這種情況下,將立即創建并派生所有CPU內核。將此用于輕量級和快速運行的CPU內核,以避免由于按需生成CPU內核而造成的延遲
return_train_score bool, default=False
是否包括訓練集準確率。計算訓練集準確率用于了解不同的參數設置如何影響過擬合和欠擬合之間的權衡。但是,在訓練集上計算準確率可能在計算上消耗很大,并且不嚴格要求選擇產生最優泛化性能的參數。

版本0.19中的新功能。

在版本0.21中:默認值從True更改為False
return_estimator bool, default=False
是否返回每個切分中擬合的估計器。

0.20版中的新功能。
error_score ‘raise’ or numeric
如果估計器擬合出現錯誤時,分配給準確率的值。如果設置為“ raise”,則會引發錯誤。如果給出數值,則引發FitFailedWarning。此參數不會影響重新擬合步驟,這將總是引發錯誤。

0.20版中的新功能。
返回值 說明
scores dict of float arrays of shape (n_splits,)
每次交叉驗證運行時的估計器準確率數組。

返回包含每個評分器的得分或次數數組的字典。這個dict字典的鍵可能是:

- test_score
每個交叉驗證切分上測試集的準確率數組。如果評分參數中有多個評分指標,在test_score特定指標中(例如test_r2test_auc)添加后綴_score

- train_score
每個交叉驗證切分上訓練集的準確率數組。如果評分參數中有多個評分指標,在train_score特定指標中(例如train_r2train_auc)添加后綴_score。僅當return_train_scoreparameter為True時才可用。

- fit_time
將估計器擬合到每個交叉驗證切分的訓練集集合上的時間。

- score_time
在每個交叉驗證切分的測試集上對估計器評分的次數。(請注意,即使return_train_score設置為True,也不包括訓練集上的評分次數)

- estimator
每個交叉驗證切分的估計器對象。僅當return_estimator參數設置為True時才可用。

另見:

sklearn.model_selection.cross_val_score 對單個指標評估進行交叉驗證。

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

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

示例

>>> from sklearn import datasets, linear_model
>>> from sklearn.model_selection import cross_validate
>>> from sklearn.metrics import make_scorer
>>> from sklearn.metrics import confusion_matrix
>>> from sklearn.svm import LinearSVC
>>> diabetes = datasets.load_diabetes()
>>> X = diabetes.data[:150]
>>> y = diabetes.target[:150]
>>> lasso = linear_model.Lasso()

單指標評估使用 cross_validate

>>> cv_results = cross_validate(lasso, X, y, cv=3)
>>> sorted(cv_results.keys())
['fit_time''score_time''test_score']
>>> cv_results['test_score']
array([0.331507340.080223110.03531764])

多指標評估使用cross_validatescoring更多信息,請參考參數文檔)

>>> scores = cross_validate(lasso, X, y, cv=3,
...                         scoring=('r2''neg_mean_squared_error'),
...                         return_train_score=True)
>>> print(scores['test_neg_mean_squared_error'])
[-3635.5... -3573.3... -6114.7...]
>>> print(scores['train_r2'])
[0.28010158 0.39088426 0.22784852]

sklearn.model_selection.cross_validate使用示例?