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