AI-031: Google机器学习教程(ML Crash Course with TensorFlow APIs)笔记8 - 练习使用校验集和测试集以及评估模型

本文是Google机器学习教程(ML Crash Course with TensorFlow APIs)的学习笔记。教程地址:

https://developers.google.com/machine-learning/crash-course/ml-intro

8. 使用校验集和测试集以及评估模型

代码及解说地址:

https://colab.research.google.com/notebooks/mlcc/validation.ipynb

机器学习中的调试通常是数据调试而不是代码调试。

为了能使得训练的模型可以应用到新的『普通』数据,不会过耦合Overfitting,我们选取的样本数据要满足泛化假设:

为了评估模型,可以将数据集划分为训练集、校验集和测试集:

更高的工作流程:

如何对样本数据拆分?

首先,样本数据随机排序:

# 随机化有利于保障训练集与测试集的分布是一致的
california_housing_dataframe = california_housing_dataframe.reindex(
    np.random.permutation(california_housing_dataframe.index))

接下来拆分出数据:

# 训练集选取12000/17000
training_examples = preprocess_features(california_housing_dataframe.head(12000))
training_targets = preprocess_targets(california_housing_dataframe.head(12000))

# 选取后5000个作为验证集
validation_examples = preprocess_features(california_housing_dataframe.tail(5000))
validation_targets = preprocess_targets(california_housing_dataframe.tail(5000))

可以通过图形化来分析数据的分布是否满足泛化,比如练习中有城市的坐标,可以绘制散点图:

plt.figure(figsize=(13, 8))  # 图的宽、高

ax = plt.subplot(1, 2, 1)  # 绘制组合图,plt.subplot('行','列','编号'), 2行2列,编号1-4
ax.set_title("Validation Data")

ax.set_autoscaley_on(False)
ax.set_ylim([32, 43])
ax.set_autoscalex_on(False)
ax.set_xlim([-126, -112])
plt.scatter(validation_examples["longitude"],
            validation_examples["latitude"],
            cmap="coolwarm",
            c=validation_targets["median_house_value"] / validation_targets["median_house_value"].max())

ax = plt.subplot(1, 2, 2)
ax.set_title("Training Data")

ax.set_autoscaley_on(False)
ax.set_ylim([32, 43])
ax.set_autoscalex_on(False)
ax.set_xlim([-126, -112])
plt.scatter(training_examples["longitude"],
            training_examples["latitude"],
            cmap="coolwarm",
            c=training_targets["median_house_value"] / training_targets["median_house_value"].max())
_ = plt.plot()
plt.show()

样本随机排序前的训练集、校验集分布:

样本集随机排序后的训练集、校验集分布:

训练集与校验集的预测偏差:

通过测试集来看看模型的效果,最终根方差在164:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭记北宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值