我正在研究 KerasClassifier,因为我想将其插入 scikit-learn 管道中,但我收到了前面提到的 ValueError。
以下代码应该能够重现我遇到的错误:
from sklearn.model_selection import KFold, cross_val_score
from sklearn.preprocessing import StandardScaler
from scikeras.wrappers import KerasClassifier
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.datasets import load_iris
import numpy as np
data = load_iris()
X = data.data
y = data.target
def create_model():
model = Sequential()
model.add(Dense(8, input_dim=4, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
return model
clf = KerasClassifier(build_fn=create_model,
epochs=100,
batch_size=10,
verbose=1)
pipeline = Pipeline([
('scaler', StandardScaler()),
('clf', clf)
])
kf = KFold(n_splits=5, shuffle=True, random_state=42)
results = cross_val_score(pipeline, X, y, cv=kf)
print("Cross-Validation Accuracy:", np.mean(results))
我的模型似乎是在纪元运行时编译的。但是,之后我收到错误:
ValueError: Could not interpret metric identifier: loss
tensorflow 和 scikeras 库的版本是:
scikeras==0.12.0
tensorflow==2.15.0
有相同的问题,包括相同的错误 atm,但使用 KerasRegressor。您找到解决方案了吗?