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
中的折數,一個產生 (訓練, 測試) 分割的迭代物件,分割方式為索引陣列。
對於
int
/None
輸入,如果估算器是一個分類器且y
是二元或多類別,則使用StratifiedKFold
。在所有其他情況下,使用KFold
。這些分割器實例化時shuffle=False
,因此跨呼叫的分割將會相同。請參閱使用者指南,以了解此處可以使用的各種交叉驗證策略。
在 0.22 版本變更: 如果
None
,cv
的預設值從 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]