在keras中使用交叉驗證或者網格搜尋踩的坑

2021-09-23 16:00:21 字數 1305 閱讀 1300

1.create_model。即建立自己的模型,在keras中自己根據需要搭模型,例如

def create_model(self):

"""2.定義進行調參或者交叉驗證的方法,以供其他方法進行呼叫

def adj_para(self,x_train, y_train):

estimator=kerasclassifier(build_fn=self.create_model)

batch_size = [10, 20, 30]

epochs = [10, 50]

param_grid = dict(batch_size=batch_size, nb_epoch=epochs)

grid=gridsearchcv(estimator=estimator,param_grid=param_grid,cv=5,scoring = 'accuracy')

grid_result=grid.fit(x_train,y_train)

print("best_score:", grid_result.best_score_)

print("best_para:", grid_result.best_params_)

注意:這兩個方法的定義所存在的類中,類的構造方法 def __init__(self):中,不能存在類變數 ,即在類構造方法中不能例項化其他類,否則會報typeerror: cannot deepcopy this pattern object。具體還不知道什麼原因,只知道這樣做不會再報深複製的錯誤了。如果有哪位大神知道,還希望分享

具體例項

class a(object):

def __init__(self):

self.a="aa"

def create_model(self):

"""create model function

:return:

"""def adj_para(self,x_train, y_train):

"""調參方法或者交叉驗證方法的定義"""

上面這種方式可以,但是下面的方式不可以

class a(object):

def __init__(self):

self.a="aa"

self.objectb=b()###例項化b

def create_model(self):

"""create model function

:return:

"""def adj_para(self,x_train, y_train):

"""調參方法或者交叉驗證方法的定義"""

在MATLAB中使用交叉驗證函式的方法

這週忙著趕畢業 發個前段時間用到的在matlab中使用交叉驗證函式的方法吧。交叉驗證是一種隨機迴圈驗證方法,它可以將資料樣本隨機分割成幾個子集。交叉驗證主要用於評估統計分析或機器學習演算法的泛化能力等。在評估機器學習演算法的泛化能力時,我們可以選擇隨機分割後的一部分資料作為訓練樣本,另一部分作為測試...

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

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

Matlab使用交叉驗證

在做機器學習時,經常要用到交叉驗證來分配資料,故在此記錄一下。所謂交叉驗證,就是將乙個資料集分為k份,然後取其中乙份作為測試集,剩餘k 1份作為訓練集。然後,取另乙份作為測試集,其餘k 1份作為訓練集.如此迴圈,直到每乙份都做過測試集為止。用的比較多的是10折交叉驗證,如下 clc clear al...