KerasRegressor: ValueError: непрерывный не поддерживается - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь применить метод обучения регрессии к моим данным, имеющим 28 измерений.

Код:

import numpy
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# load dataset
dataframe = pd.read_csv("gold_train_small.csv", header=None)
dataset = dataframe.values
# split into input (X) and output (Y) variables
X = dataset[:,1:29]
Y = dataset[:,0]

# load test set

# load dataset
dataframe = pd.read_csv("gold_test.csv", header=None)
dataset = dataframe.values
# split into input (X) and output (Y) variables
X_test = dataset[:,1:29]
Y_test = dataset[:,0]

# define base model
def baseline_model():
    # create model
    model = Sequential()
    model.add(Dense(28, input_dim=28, kernel_initializer='normal', activation='relu'))
    model.add(Dense(1, kernel_initializer='normal'))
    # Compile model
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model

# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# evaluate model with standardized dataset
estimator = KerasRegressor(build_fn=baseline_model, epochs=100, batch_size=5, verbose=0)

kfold = KFold(n_splits=10, random_state=seed)
results = cross_val_score(estimator, X, Y, cv=kfold)
print("Results: %.2f (%.2f) MSE" % (results.mean(), results.std()))

#Baseline: 31.64 (26.82) MSE

# evaluate model with standardized dataset
numpy.random.seed(seed)
estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('mlp', KerasRegressor(build_fn=baseline_model, epochs=50, batch_size=5, verbose=0)))
pipeline = Pipeline(estimators)
kfold = KFold(n_splits=10, random_state=seed)
results = cross_val_score(pipeline, X, Y, cv=kfold)
print("Standardized: %.2f (%.2f) MSE" % (results.mean(), results.std()))


estimator.fit(X, Y)
prediction = estimator.predict(X_test)
accuracy_score(Y_test, prediction)

Однако я получаю следующую ошибку для последней строки:

ValueError: непрерывный не поддерживается

Должен ли я использовать другие меры?

1 Ответ

0 голосов
/ 16 ноября 2018

Это потому, что precision_score предназначен для модели классификации.

Поскольку это регрессионная модель, вам следует попробовать:

estimator.score(X_test,Y_test)
...