Keras - Comment effectuer une prédiction à l'aide de KerasRegressor?
Je suis nouveau à l'apprentissage de la machine, et je suis en train de gérer Keras pour effectuer des tâches de régression. J'ai mis en œuvre ce code, basé sur cette exemple.
X = df[['full_sq','floor','build_year','num_room','sub_area_2','sub_area_3','state_2.0','state_3.0','state_4.0']]
y = df['price_doc']
X = np.asarray(X)
y = np.asarray(y)
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=.2)
def baseline_model():
model = Sequential()
model.add(Dense(13, input_dim=9, kernel_initializer='normal',
activation='relu'))
model.add(Dense(1, kernel_initializer='normal'))
model.compile(loss='mean_squared_error', optimizer='adam')
return model
estimator = KerasRegressor(build_fn=baseline_model, nb_epoch=100, batch_size=100, verbose=False)
kfold = KFold(n_splits=10, random_state=seed)
results = cross_val_score(estimator, X_train, Y_train, cv=kfold)
print("Results: %.2f (%.2f) MSE" % (results.mean(), results.std()))
prediction = estimator.predict(X_test)
accuracy_score(Y_test, prediction)
Lorsque j'exécute le code, j'obtiens cette erreur:
AttributeError: 'KerasRegressor' object has no attribute 'model'
Comment pourrais-je correctement "insérer" le modèle en KerasRegressor?
- Pouvez-vous poster le plein de trace de pile?
- où en êtes-vous côté de l'estimateur?
cross_val_score
s'adapte et le score de l'estimateur.- oui, c'est fait, mais à
predict
sur un autre, il a besoin defit
le modèle de nouveau. pour cette ligneprediction = estimator.predict(X_test)
- J'ai ajouté le reste du code. Est-il exact
prediction = estimator.predict(X_test)
? - veuillez cocher la réponse.
- Aah oui. J'ai négligé ce détail. Mon mauvais.
- S'il vous plaît ajouter le full stack trace de l'erreur, de sorte que nous connaissons dans lequel la ligne de cette erreur se produit. Jusqu'alors, nous sommes incapables de l'aider.
- En fait quelle est la version de keras et scikit-learn utilisez-vous?
- Je viens d'installer Keras et Scikit-learn, j'ai les versions les plus récentes
Vous devez vous connecter pour publier un commentaire.
vous avez pour s'adapter à l'estimateur de nouveau après
cross_val_score
pour évaluer les nouvelles données:De travail version d'Essai:
AttributeError: 'KerasRegressor' object has no attribute 'model'
estimator.fit(X, y)
?prediction = estimator.predict(X_test)
accuracy_score()
ne sera pas valable pour la régression de la tâche.accuracy_score()
?accuracy_score()
?cross_val_score
clones de l'estimateur, train copie clonée sur les données d'apprentissage de chaque pli et de fournir score d'eux. Afin de ne pas altérer le principal estimateur (qui est envoyé en elle) de toute façon.Pour l'évaluation de la performance de votre système, vous pouvez calculer l'erreur comme suit.
Vous aussi n'avez pas besoin d'appeler KFold et cross_val_score.
Au lieu de kerasRegressor, vous pouvez utiliser directement le modèle lui-même.
Ces deux extraits du code donner exactement les mêmes résultats:
Veuillez noter que le shuffle argument de l'ajustement() fonctionne pour les deux kerasRegressor et le modèle doit être Faux. De plus, pour avoir le corrigé de l'état initial et d'obtenir des résultats reproductibles, vous devez ajouter ces lignes de code au début de votre script: