在我的模型数据上使用 Keras 中的 K 折交叉验证

数据挖掘 喀拉斯 张量流 交叉验证
2021-09-29 02:23:58

我想对我的模型数据使用 K 折交叉验证。

我在 Keras 的代码是:

a = np.array(  
[[283, 95, 72, 65],
[290, 100, 80, 72],
[120,170,130,122],
[100,230,110,200],
[300,100,200,500]]
)
X = a[:,0:2]
Y = a[:,3]

from sklearn.model_selection import KFold, cross_val_score
k_fold = KFold(n_splits=3)    
model = models.Sequential()
model.add(Dense(12, input_shape=(3,)))
model.add(LeakyReLU())
model.summary()

cross_val_score(model,X,Y)

但是,它会产生这个错误:

如果未指定评分,则传递的估计器应具有“评分”方法。估计器没有。

当我选择一个评分参数为:

cross_val_score(model,X,Y, scoring= 'accuracy')

它犯了另一个错误:

类型错误:无法克隆对象“”(类型):它似乎不是 scikit-learn 估计器,因为它没有实现“get_params”方法。

如何在此模型上使用 K 折交叉验证?

谢谢

2个回答

cross_val_score 似乎取决于来自 sk-learn 并具有 get_params 方法的模型。由于您的 Keras 实现没有这个,它不能提供必要的信息来做 cross_val_score。尝试在此处找到的手动 k 折交叉验证:https ://machinelearningmastery.com/evaluate-performance-deep-learning-models-keras/

keras 有一个不错的 SKLearn 包装器:

https://keras.io/scikit-learn-api/

我没有使用包装器亲自测试过交叉验证,但我预计它会起作用,因为我用包装器尝试过的所有其他东西(无论多么奇怪)都按预期工作。