cross_val_score#

sklearn.model_selection.cross_val_score(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, params=None, pre_dispatch='2*n_jobs', error_score=nan)[原始碼]#

通過交叉驗證評估分數。

請參閱使用者指南以了解更多資訊。

參數:
estimator實作 'fit' 的估算器物件

用於擬合資料的物件。

X形狀為 (n_samples, n_features) 的類陣列 (array-like) 或稀疏矩陣 (sparse matrix)

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

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

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

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

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

在 1.4 版本變更: 只有在未透過 sklearn.set_config(enable_metadata_routing=True) 啟用元資料路由時,才能傳遞 groups。當啟用路由時,請透過 params 引數傳遞 groups 以及其他元資料。例如:cross_val_score(..., params={'groups': groups})

scoring字串或可呼叫物件,預設值為 None

一個字串 (請參閱 評分參數:定義模型評估規則) 或一個評分器可呼叫物件/函數,其簽名為 scorer(estimator, X, y),並且應僅傳回單一值。

cross_validate 類似,但僅允許單一指標。

如果 None,則使用估算器的預設評分器(如果有的話)。

cv整數、交叉驗證產生器或可迭代物件,預設值為 None

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

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

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

  • CV 分割器,

  • 一個產生 (訓練, 測試) 分割的迭代物件,分割方式為索引陣列。

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

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

在 0.22 版本變更: 如果 Nonecv 的預設值從 3 折變更為 5 折。

n_jobs整數,預設值為 None

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

verbose整數,預設值為 0

詳細程度。

params字典,預設值為 None

要傳遞至底層估算器的 fit、評分器和 CV 分割器的參數。

在 1.4 版本中加入。

pre_dispatch整數或字串,預設值為 '2*n_jobs'

控制並行執行期間派遣的工作數。當派遣的工作多於 CPU 可以處理時,減少此數字有助於避免記憶體消耗爆炸。此參數可以是

  • None,在這種情況下,會立即建立並產生所有工作。將此用於輕量級且快速執行的工作,以避免由於按需產生工作而導致的延遲

  • 一個整數,給出產生的總工作數

  • 一個字串,給出一個表示為 n_jobs 函數的表達式,如 '2*n_jobs'

error_score'raise' 或數值,預設值為 np.nan

如果在估算器擬合中發生錯誤,則要分配給分數的值。如果設定為 'raise',則會引發錯誤。如果給定數值,則會引發 FitFailedWarning。

在 0.20 版本中加入。

傳回值:
scores形狀為 (len(list(cv)),) 的浮點數 ndarray

每次執行交叉驗證時,估算器的分數陣列。

另請參閱

cross_validate (交叉驗證)

在多個指標上執行交叉驗證,並傳回訓練分數、擬合時間和評分時間。

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.3315057  0.08022103 0.03531816]