sklearn.model_selection.cross_val_score в регрессии ИНС - PullRequest
0 голосов
/ 05 мая 2020

Когда я запускаю следующий код, я получаю

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)

1 Ответ

2 голосов
/ 06 мая 2020

Функция Cross_val_score не распознает метрики, используемые в модели keras, и по умолчанию ее None, попробуйте добавить scoring = 'precision' к cross_val_score

...