scikit-learn 与 Keras 混淆矩阵的 K 折交叉验证

数据挖掘 喀拉斯 scikit-学习 交叉验证
2022-02-28 01:30:25

我打算在 scikit-learn 的 K-fold 时使用 Keras 显示混淆矩阵。我使用 Keras 的代码是:

import numpy
import pandas
from keras.models import Sequential
from keras.layers import Dense

seed = 7
numpy.random.seed(seed)

# load dataset
dataframe = pandas.read_csv("BolMov.csv", header=None)
dataset = dataframe.values
X = dataset[:,0:24].astype(float)
Y = dataset[:,24]

model = Sequential()
model.add(Dense(16, activation='relu'))
model.add(Dense(7, activation='softmax')
model.compile('adam', 'categorical_crossentropy', metrics=['accuracy'])

y_cat = to_categorical(Y)
result = model.fit(X, y_cat, verbose=0, epochs=50)

plot_loss_accuracy(result)

y_pred = model.predict_classes(X, verbose=0)

print(classification_report(y, y_pred))
plot_confusion_matrix(model, X, y)

我应该如何在这段代码中使用 kfold?作者在这里调用了一个函数。我相信如果我在我的代码中这样做,model.fit()将会执行两次——一次用于我的 Keras 代码,另一次(内部)用于KerasClassifier(). model.fit()只想执行一次。感谢任何人的帮助。

1个回答

KFold()用于交叉验证目的,在整个数据集的子集上创建多个模型,并在验证过程结束后丢弃。所以model.fit()应该明确地调用它来创建模型。这两项任务都可以通过KerasClassifier()包装模型设计的所有细节命名的包装器轻松完成。