sklearn.model_selection.cross_val_score在ANN回归中的应用。

问题描述 投票:0回答:1

当我运行以下代码时,我收到

ValueError.模型未配置计算精度。模型没有被配置为计算精度。您应该通过 metrics=["accuracy"]model.compile() 方法。

我的代码。

def create_network():
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu', input_shape=(X.shape[1],)))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(1))
    model.compile(optimizer='rmsprop',
                  loss='mse',
                  metrics=['mae'])
    return model

from keras.wrappers.scikit_learn import KerasClassifier
neural_network = KerasClassifier(build_fn=create_network, 
                                 epochs=100, 
                                 batch_size=10, 
                                 verbose=1)

X=feature_normalization(X)[0]


from sklearn.model_selection import cross_val_score
cross_val_score(neural_network, X, y, cv=4)

但我不能在回归模型中使用精度。有什么线索可以告诉我怎么还能用 cross_val_score 而不像这里一样从头开始做k-fold交叉验证。

for i in range(k):
    print(f'Processing fold # {i}')
    X_test = X[i * num_val_samples: (i+1) * num_val_samples]
    y_test = y[i * num_val_samples: (i+1) * num_val_samples]

    X_train = np.concatenate([X[:i * num_val_samples],
                              X[(i+1) * num_val_samples:]],
                              axis=0)
    y_trains = np.concatenate([y[:i * num_val_samples],
                              y[(i+1)*num_val_samples:]],
                              axis=0)
    model = create_network()
    model.fit(X_train,
              y_train,
              epochs=num_epochs,
              batch_size=10,
              verbose=1)
    val_mse, val_mae = model.evaluate(X_test, y_test, verbose=1)
    all_scores.append(val_mae)
python-3.x machine-learning keras scikit-learn neural-network
1个回答
2
投票

Cross_val_score函数不能识别keras模型中使用的指标,默认为None,请尝试在cross_val_score中添加scoring='accuracy'。

© www.soinside.com 2019 - 2024. All rights reserved.