记录研究生封校生活的学习day11(第二篇)干货满满(回归Regression-以波士顿房价为例)

89 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

总计:今天是十月更文计划第十一天,第二十二篇

这篇继续上一篇的学习:

上一篇写到了medel.summary()方法来查看神经网络的参数:

image.png

这个只是搭建了一个最简单的神经网络,接下来要写损失函数。

model.compile(loss="mean_squared_error", optimizer="sgd")

这句话很简单,然后再写回调函数:

callbacks = [keras.callbacks.EarlyStopping(
    patience=5, min_delta=1e-3)]

接下来就是神经网络模型的训练了:

history = model.fit(x_train_scaled, y_train,
                    validation_data = (x_valid_scaled, y_valid),
                    epochs = 20,
                    callbacks = callbacks)

model.fit所带的参数有很多,具体参数可以查看keras官方文档,这里说几个最关键的参数,

x_train_scaled, y_train,表明输入的需要学习的参数x,y

validation_data = (x_valid_scaled, y_valid),表示在预测过程中,作为验证集来判断预测的准确率。

详细的参数简介如下:

image.png

epochs我设置为20,详细的来查看具体的运行结果:

image.png

对于前面没有指定默认终止条件的,在验证集的损失函数相差小于0.001的时候就会自动停止epochs,

使用history.history可以自动看到每次的记录:

image.png

如果想要看误差值,那么可以使用如下方法:

pd.DataFrame(history.history['val_loss']).diff(1)

pd方法中diff(1),可以自动的算出后一行减去前一行,用这个方法来计算差值,具体的输出结果如下:

image.png

可以清晰的看到,我的epochs设置为20次,但是实际上运行的次数是可能小于epochs设置的次数的。

如果像我这样14/13:

image.png

就可以断定后两次的loss差值绝对值均少于0.0001.就会提前停止,earlystopping。

对于输出结果的绘制:

使用如下绘图语句:

def plot_learning_curves(history):
    pd.DataFrame(history.history).plot(figsize=(8, 5))
    plt.grid(True)
    plt.gca().set_ylim(0, 1.4)
    plt.show()
plot_learning_curves(history)

输出的结果如下:

image.png