我正在尝试建立一个模型来预测房价。
我有一些特征X(浴室数量等)和目标Y(范围在30万至80万美元之间)
我使用sklearn的标准缩放器在将Y拟合到模型之前对其进行标准化。
以下是我的Keras模型:
def build_model():
model = Sequential()
model.add(Dense(36, input_dim=36, activation='relu'))
model.add(Dense(18, input_dim=36, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mse', optimizer='sgd', metrics=['mae','mse'])
return model
字符串
我在解释结果时遇到了麻烦--MSE为0.617454319755意味着什么?
我是否必须对这个数字进行逆变换,并对结果进行平方根,得到741.55美元的错误率?
math.sqrt(sc.inverse_transform([mse]))
型
我很抱歉听起来很傻,因为我开始了!
2条答案
按热度按时间rur96b6h1#
我很抱歉听起来很傻,因为我开始了!
不要这样做;这是一个非常重要的微妙问题,通常(遗憾的是)在教程和介绍性论述中被省略。
不幸的是,它并不像取反变换的MSE的平方根那么简单,但也不是那么复杂;本质上你要做的是:
1.将预测转换回原始数据的初始比例
1.获取这些反变换预测与原始数据之间的MSE
1.求结果的平方根
以便获得模型的性能指标,该指标在您的问题的 * 业务 * 上下文中将是有意义的(例如,这里的美元)。
让我们看一个玩具数据的快速示例,省略模型本身(这在这里是无关紧要的,实际上可以是任何回归模型-不仅仅是Keras模型):
字符串
现在,假设我们使用缩放集
X_train
和Y_train
拟合Keras模型(此处未显示),并获得训练集上的预测:型
Keras报告的MSE实际上是缩放的MSE,即:
型
而我上面描述的3个步骤很简单:
型
因此,在我们的例子中,如果我们的初始Y是美元,那么相同单位(美元)的实际误差将是0.32(美元)。
请注意,对缩放的MSE进行逆变换的简单方法将如何给出给予非常不同(并且不正确)的结果:
型
kmbjn2e32#
MSE是均方误差,这里是公式。
基本上,它是期望输出和预测值之差的平方的平均值。求其平方根不会给予误差和输出之间的差。这对训练很有用。
目前你已经建立了一个模型。如果你想训练模型,请使用这些函数。
字符串
如果你想预测输出,你应该使用下面的代码。
型
你可以在这里找到更多的细节。
https://keras.io/models/about-keras-models/
https://keras.io/models/sequential/的