【发布时间】:2018-05-01 00:05:34
【问题描述】:
我关注了 Jason Brownlee 的 tutorial,并完成了第 2 部分。结果,他的代码显然给出了,
基线:31.64 (26.82) MSE
我给了
结果:-59.54 (45.45) MSE
我对否定结果很感兴趣,因为它应该是平方米的价格(案例研究是波士顿住房数据)。
他的代码如下:
import numpy
import pandas
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
# load dataset
dataframe = pandas.read_csv("housing.csv", delim_whitespace=True, header=None)
dataset = dataframe.values
# split into input (X) and output (Y) variables
X = dataset[:, 0:13]
Y = dataset[:, 13]
# define base model
def baseline_model():
# create model
model = Sequential()
model.add(Dense(13, input_dim=13, 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, nb_epoch=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()))
print(results)
编辑: 结果现在是
使用 TensorFlow 后端。 2017-11-17 15:19:20.550701: 我 tensorflow/core/platform/cpu_feature_guard.cc:137] 你的 CPU 支持 此 TensorFlow 二进制文件未编译使用的说明: SSE4.1 SSE4.2 AVX AVX2 FMA
结果:-59.57 (45.48) MSE
[ -21.09693904 -34.74104155 -24.24863872 -113.87524421 -80.55262979 > -98.56815988 -39.08693658 -150.61814082 -17.41903878 -15.5249161 > 忽略: Traceback(最近一次通话最后一次):文件 “/home/zchihani/pythonEnvs/kerasEnv/lib/python3.5/site-packages/tensorflow/python/client/session.py”, 第 696 行,在 del TypeError: 'NoneType' object is not callable
有趣的是(也许),进一步的调用没有显示“忽略异常”部分。
--编辑结束--
我读到here说“当训练误差降低到一定水平时,输出的预测有时是负的”。
建议的响应是使用
from keras.constraints import nonneg
但它没有说明如何或在哪里......
关于信息,mu keras.json 是
{
"backend": "tensorflow",
"epsilon": 1e-07,
"floatx": "float64",
"image_dim_ordering": "tf",
"image_data_format": "channels_last"
}
并且 pip list 的输出(在虚拟环境中)给出
autopep8 (1.3.3)
bleach (1.5.0)
enum34 (1.1.6)
flake8 (3.5.0)
h5py (2.7.1)
html5lib (0.9999999)
importmagic (0.1.7)
jedi (0.11.0)
Keras (2.0.9)
Markdown (2.6.9)
mccabe (0.6.1)
numpy (1.13.3)
olefile (0.44)
pandas (0.21.0)
parso (0.1.0)
Pillow (4.3.0)
pip (9.0.1)
pkg-resources (0.0.0)
protobuf (3.4.0)
pycodestyle (2.3.1)
pyflakes (1.6.0)
python-dateutil (2.6.1)
pytz (2017.3)
PyYAML (3.12)
rope (0.10.7)
scikit-learn (0.19.1)
scipy (1.0.0)
setuptools (36.7.0)
six (1.11.0)
tensorflow (1.4.0)
tensorflow-gpu (1.4.0)
tensorflow-tensorboard (0.4.0rc2)
Theano (1.0.0rc1+5.gab69bf0)
Werkzeug (0.12.2)
wheel (0.30.0)
yapf (0.19.0)
【问题讨论】:
-
刚刚测试你的代码得到了这个结果:'Results: 57.92 (42.26) MSE' 我不知道你怎么能得到否定的结果,你能添加结果变量的输出吗?
-
@Paddy 我很怀疑,这是我在 JB 的教程中找到的确切代码......但是,这是我第一次使用 python 和 Keras 代码,你能告诉我应该打印什么变量吗?谢谢
-
这个:结果
-
@Paddy 你能发布你正在使用的 Keras、scikit-learn 和 tensorflow 的版本吗?我也得到了负面的 MSE,并且我已经看到 Keras 和/或 sklearn 在某些情况下正在翻转符号的建议,假设更大的值更好。我正在使用 Keras (2.1.1)、scikit-learn (0.18.2) 和 tensorflow (1.3.0)。
-
抱歉耽搁了,我正在使用 Keras (2.0.8)、Numpy (1.13.3)、TensorFlow (1.3.0) 和 Sklearn (0.19.1)
标签: python machine-learning tensorflow keras regression