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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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