當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn cross_validate用法及代碼示例


本文簡要介紹python語言中 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估計器對象實現‘fit’

用於擬合數據的對象。

X形狀類似數組 (n_samples, n_features)

要擬合的數據。例如,可以是列表或數組。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類似數組,默認=無

在監督學習的情況下嘗試預測的目標變量。

groups形狀類似數組 (n_samples,),默認=None

將數據集拆分為訓練/測試集時使用的樣本的分組標簽。僅與 “Group” cv 實例(例如 GroupKFold )結合使用。

scoringstr,可調用,列表,元組或字典,默認=無

評估cross-validated模型在測試集上的性能的策略。

如果scoring 表示單個分數,則可以使用:

如果scoring代表多個分數,可以使用:

  • 唯一字符串的列表或元組;
  • 一個可調用的返回一個字典,其中鍵是指標名稱,值是指標分數;
  • 以度量名稱作為鍵和可調用值的字典。

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

cvint,交叉驗證生成器或可迭代的,默認=無

確定交叉驗證拆分策略。 cv 的可能輸入是:

  • 無,使用默認的 5 折交叉驗證,
  • int,指定 (Stratified)KFold 中的折疊數,
  • CV分配器,
  • 一個可迭代的 yield (train, test) 拆分為索引數組。

對於 int/None 輸入,如果估計器是分類器並且 y 是二進製或多類,則使用 StratifiedKFold 。在所有其他情況下,使用Fold。這些拆分器使用 shuffle=False 實例化,因此拆分在調用之間將是相同的。

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

n_jobs整數,默認=無

並行運行的作業數。訓練估計器和計算分數在交叉驗證拆分上並行化。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。

verbose整數,默認=0

詳細程度。

fit_params字典,默認=無

傳遞給估計器的 fit 方法的參數。

pre_dispatchint或str,默認=’2*n_jobs’

控製在並行執行期間分派的作業數。當調度的作業多於 CPU 可以處理的數量時,減少此數字有助於避免內存消耗的爆炸式增長。該參數可以是:

  • 無,在這種情況下,所有作業都會立即創建和生成。將此用於輕量級和 fast-running 作業,以避免由於生成作業 on-demand 造成的延遲

  • 一個 int,給出產生的總作業的確切數量

  • 一個 str,給出一個表達式作為 n_jobs 的函數,如 ‘2*n_jobs’

return_train_score布爾,默認=假

是否包括火車分數。計算訓練分數用於深入了解不同的參數設置如何影響過擬合/欠擬合權衡。然而,在訓練集上計算分數可能在計算上很昂貴,並且不嚴格要求選擇產生最佳泛化性能的參數。

return_estimator布爾,默認=假

是否返回適合每個拆分的估計器。

error_score‘raise’ 或數字,默認=np.nan

如果估計器擬合中發生錯誤,則分配給分數的值。如果設置為‘raise’,則會引發錯誤。如果給出數值,則引發FitFailedWarning。

返回

scores形狀浮點數組的字典 (n_splits,)

每次交叉驗證運行的估計器分數數組。

返回包含每個記分器的分數/時間數組的數組字典。此 dict 的可能鍵是:

test_score

每個 cv 拆分的測試分數的分數數組。如果評分參數中有多個評分指標,則 test_score 中的後綴 _score 更改為特定指標,例如 test_r2test_auc

train_score

每個 cv 拆分的火車分數的分數數組。如果評分參數中有多個評分指標,則 train_score 中的後綴 _score 更改為特定指標,例如 train_r2train_auc。這僅在 return_train_score 參數為 True 時可用。

fit_time

為每個 cv 拆分在訓練集上擬合估計器的時間。

score_time

為每個 cv 拆分在測試集上對估計器進行評分的時間。 (注意即使 return_train_score 設置為 True,也不包括在訓練集上評分的時間

estimator

每個 cv 拆分的估計器對象。這僅在 return_estimator 參數設置為 True 時可用。

例子

>>> 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.33150734, 0.08022311, 0.03531764])

使用cross_validate 進行多指標評估(請參閱scoring 參數文檔以獲取更多信息)

>>> 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]

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.model_selection.cross_validate。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。