Keras – 如何使用KerasRegressor进行预测?

我对机器学习是新手,正在尝试使用Keras来执行回归任务。我基于这个例子实现了以下代码。

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 modelestimator = 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)

当我运行代码时,我得到了以下错误:

AttributeError: 'KerasRegressor' object has no attribute 'model'

我该如何正确地将模型“插入”到KerasRegressor中?


回答:

你需要在cross_val_score之后再次拟合估计器,以评估新数据:

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()))estimator.fit(X, y)prediction = estimator.predict(X_test)accuracy_score(Y_test, prediction)

工作测试版本:

from sklearn import datasets, linear_modelfrom sklearn.model_selection import cross_val_score, KFoldfrom keras.models import Sequentialfrom sklearn.metrics import accuracy_scorefrom keras.layers import Densefrom keras.wrappers.scikit_learn import KerasRegressorseed = 1diabetes = datasets.load_diabetes()X = diabetes.data[:150]y = diabetes.target[:150]def baseline_model():    model = Sequential()    model.add(Dense(10, input_dim=10, activation='relu'))    model.add(Dense(1))    model.compile(loss='mean_squared_error', optimizer='adam')    return modelestimator = 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, y, cv=kfold)print("Results: %.2f (%.2f) MSE" % (results.mean(), results.std()))estimator.fit(X, y)prediction = estimator.predict(X)accuracy_score(y, prediction)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注