sklearn筆記三 交叉驗證

2021-09-27 08:55:31 字數 3940 閱讀 2993

普通:train資料和test資料隨機劃分一次用train擬合出模型 用test去驗證模型的score

交叉驗證:多分幾次train資料和test資料分別這用模型驗證這幾次的score

# 交叉驗證

from sklearn.model_selection import cross_val_score

knn =

kneighborsclassifier

(n_neighbors=5)

scores =

cross_val_score

(knn, x, y, cv=

5, scoring=

'accuracy'

)#cv=

55次驗證

利用knn分組 想看分成幾組 模型score最好

k_range =

range(1

,31)k_scores =

for k in k_range:

knn =

kneighborsclassifier

(n_neighbors=k)

scores =

cross_val_score

(knn, x, y, cv=

10, scoring=

'accuracy'

) # 適用於分類 模型的準確度

用回歸的話 比較模型的誤差 越小越好

引數gamma=0.01確定時,隨著樣本量增加 誤差(train誤差和test誤差)的變化

from sklearn.model_selection import  learning_curve

from sklearn.datasets import load_digits

from sklearn.svm import svc

import matplotlib.pyplot as plt

import numpy as np

digits =

load_digits()

x = digits.data

y = digits.target

#10次驗證 求出模型的 train誤差 test誤差

隨著樣本增加,模型能更好的**train資料,所以train誤差會一直降低;但是可能由於過度擬合,用test資料來測試這個模型,test誤差不會一直降低。

每個引數 對應乙個 train誤差和test誤差

調參 選擇乙個最好的引數(train誤差和test誤差都小)

from sklearn.model_selection import  validation_curve#和3中不同

param_range = np.

logspace(-

6,-2.3,5

)#在-

6到-2.3中取5個值

#param_name=

'引數名字' param_range=引數範圍

Sklearn中交叉驗證 KFold

在機器學習建模過程中,將資料分為訓練集和測試集。測試集合訓練集是完全分開的兩個資料集,完全不參與訓練,只是用於模型最終確定後,來測試模型的效果。而訓練集又要分出一部分資料用來驗證模型的訓練效果,即驗證集。驗證集在每次訓練集訓練結束後,對模型的效果進行初步地測試。之所以要設定驗證集,是因為訓練資料會有...

sklearn交叉驗證 老魚學sklearn

交叉驗證 cross validation 有時亦稱迴圈估計,是一種統計學上將資料樣本切割成較小子集的實用方法。於是可以先在乙個子集上做分析,而其它子集則用來做後續對此分析的確認及驗證。一開始的子集被稱為訓練集。而其它的子集則被稱為驗證集或測試集。交叉驗證是一種評估統計分析 機器學習演算法對獨立於訓...

k折交叉驗證的keras和sklearn版本通吃

交叉驗證 cross validation 主要用於建模應用中,例如pcr pls 回歸建模中。在給定的建模樣本中,拿出大部分樣本進行建模型,留小部分樣本用剛建立的模型進行預報,並求這小部分樣本的預報誤差,記錄它們的平方加和。而我們常用的就是k折交叉驗證。k折就是講資料集切分成k小塊,驗證集和測試集...