如何进行基本的回归预测?

时间:2019-04-29 15:01:47

标签: tensorflow machine-learning

在基本回归教程的结尾,没有关于如何从输入中获得Y值或预测的说明。

该教程是TensorFlow的基础回归教程

https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/keras/basic_regression.ipynb

首先,我只有2列时间和销售。

我已使用自己的数据,并希望按月预测未来的销售量。我已经把时间变成了数值。如果我有30个月的数据,我想预测31-35个月。

我发现sets.run函数会产生结果,但是我不知道该怎么做。

column_names = ['Time','Sales']

model = keras.Sequential

我的数据适用于本教程。但是我不知道如何得到结果?

以下代码可以工作,并根据实际结果行创建预测。

test_predictions = model.predict(normed_test_data).flatten()

plt.scatter(test_labels, test_predictions)
plt.xlabel('True Values [Sales]')
plt.ylabel('Predictions [Sales]')
plt.axis('equal')
plt.axis('square')
plt.xlim([0,plt.xlim()[1]])
plt.ylim([0,plt.ylim()[1]])
_ = plt.plot([-100, 100], [-100, 100])

我想提供输入作为月份并获得预测。

1 个答案:

答案 0 :(得分:0)

如果您要在预测中使用的数据已被规范化,则仅是使用与训练中使用的形状输入参数相同的形状来调用model.predict函数的情况。

因此对于本教程中的示例,我可以做类似的事情:

test = [{
    "Cylinders": -0.84,
    "Displacement": -1.0,
    "Horsepower": -0.7,
    "Weight": -1.1,
    "Acceleration": 0.5,
    "Model Year": -0.5,
    "USA": 0.77,
    "Europe": -0.465148,
    "Japan": -0.495225
},{
    "Cylinders": -0.54,
    "Displacement": -2.0,
    "Horsepower": -0.1,
    "Weight": -1.1,
    "Acceleration": 0.5,
    "Model Year": -0.5,
    "USA": 0.77,
    "Europe": -0.465148,
    "Japan": -0.495225
}]

testdf = pd.DataFrame(test)
preds = model.predict(testdf)

如果您自己的模型只需要时间和销售,那么我想您可以做到:

test = [{
    "Time": -0.7,
    "Sales": 0.1
},{
    "Time": 1,
    "Sales": 1.1
}]

testdf = pd.DataFrame(test)
preds = model.predict(testdf)

如果您要用于预测的数据尚未标准化,则需要首先调用norm函数。像这样:

test = [{
    "Cylinders": 6,
    "Displacement": 150,
    "Horsepower": 150,
    "Weight": 1200,
    "Acceleration": 45,
    "Model Year": 75,
    "USA": 0,
    "Europe": 1,
    "Japan": 0
},{
    "Cylinders": 4,
    "Displacement": 90,
    "Horsepower": 75,
    "Weight": 1200,
    "Acceleration": 15,
    "Model Year": 77,
    "USA": 1,
    "Europe": 0,
    "Japan": 0
}]

testdf = pd.DataFrame(test)
normed = norm(testdf)
preds = model.predict(normed)

我应该说,您所描述的问题(“销售”和“月”)听起来像是时间序列模型,而不是回归问题,所以也许回归教程并不是这类问题的最佳选择,但却不知道更不可能说