【问题标题】:Using a Neural Network to Predict Output From a New Observation使用神经网络预测新观察的输出
【发布时间】:2020-11-02 14:41:31
【问题描述】:

我使用 Python 的 Keras 包构建了一个神经网络。我的网络的目标是预测房价。这是我的训练数据集的样子。

    Price   Beds    SqFt    Built   Garage  FullBaths   HalfBaths   LotSqFt
    485000  3       2336    2004    2       2.0          1.0        2178.0
    430000  4       2106    2005    2       2.0          1.0        2178.0
    445000  3       1410    1999    1       2.0          0.0        3049.0

...

假设我有一些新房子要分析。例如,我想用

预测房子的价格
  • 4 张床
  • 2500 平方英尺
  • 2001 年建成
  • 3 个全套卫浴
  • 1 半浴
  • 3452 平方英尺的地段

如何将这些值输入到我的网络中以接收预测价格。另外,有没有办法让网络报告某种置信度指标?

作为参考,这是我的网络当前的样子。

from keras.models import Sequential
from keras.layers import Dense

N = 16

model = Sequential([
    Dense(N, activation='relu', input_shape=(7,)),
    Dense(1, activation='relu'),
])

model.compile(optimizer='sgd',
              loss='mse',
              metrics=['mean_squared_error'])

hist = model.fit(X_train, Y_train,
          batch_size=32, epochs=100,
          validation_data=(X_val, Y_val))

model.evaluate(X_test, Y_test)[1]

提前致谢!!

【问题讨论】:

    标签: python tensorflow keras neural-network prediction


    【解决方案1】:

    为此,您需要使用 model.predict(),如文档中的 here 所述。

    model.predict() 将一批输入x 作为参数。在您的情况下,您只有 1 个输入,因此您可以将其写为:

    x = [[4, 2500, 2001, 0, 3, 1, 3452]] # Assumes 0 garages
    print(model.predict(x)[0]) # Print the first (only) result
    

    【讨论】:

    • 非常感谢!有没有办法让我也获得概率或置信区间?
    • 不幸的是,神经网络的本质是不平凡的。从技术上讲,确定置信区间是可能的,但它确实是另一个你可能不想进入的兔子洞。相反,您可以做的是确定您的平均误差(甚至分布)并假设您的结果。
    • 处理您的建议的最佳方式是什么?
    • 我会做一个 'errors = model.predict(X_test) - y_test)' 来获取一些错误样本,然后 plt.hist(errors) 来查看错误的分布。然后你就会知道你的答案周围的错误分布是什么。您可以将针对您的特定案例的预测添加到所有这些样本中,这样您就可以了解您的特定案例可能在哪里。
    猜你喜欢
    • 2018-09-27
    • 2021-01-07
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    相关资源
    最近更新 更多