三者的意义
- 训练数据:用来训练模型的数据
- 验证数据:用来检验模型准确率
- 测试数据:再一次确认验证数据集中的模型是好的模型。

一般步骤:

测试数据集和验证数据的数据一定不能用来训练,否则会出现过拟合的现象

代码:

import math
import osfrom IPython import display
from matplotlib import cm
from matplotlib import gridspec
from matplotlib import pyplot as plt
from sklearn import metrics
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow.python.data import Datasettf.logging.set_verbosity(tf.logging.INFO)
pd.options.display.max_rows = 10# 读取数据
if os.path.exists('data.csv'):california_housing_dataframe = pd.read_csv('data.csv', sep=',')
else:california_housing_dataframe = pd.read_csv("https://storage.googleapis.com/mledu-datasets/california_housing_train.csv", sep=",")california_housing_dataframe.to_csv('data.csv')def preprocess_features(california_housing_dataframe):'''准备输入测试数据特征列:param california_housing_dataframe::return:'''selected_features = california_housing_dataframe[['latitude','longitude','housing_median_age','total_rooms','total_bedrooms','population','households','median_income']]processed_features = california_housing_dataframe.copy()# 添加人均住房面积processed_features['rooms_per_person'] = (california_housing_dataframe['total_rooms'] /california_housing_dataframe['population'])return processed_featuresdef preprocess_targets(california_housing_dataframe):'''目标值输入函数:param california_housing_dataframe::return: 房子的价值'''output_targets = pd.DataFrame()output_targets['median_house_value'] = (california_housing_dataframe['median_house_value'] / 1000.0)return output_targets# 传入12000组数据
training_examples = preprocess_features(california_housing_dataframe.head(12000))
training_examples.describe()# 传入12000组目标值
training_targets = preprocess_targets(california_housing_dataframe.head(12000))
training_targets.describe()# 验证数据集
validation_examples = preprocess_features(california_housing_dataframe.tail(5000))
validation_examples.describe()validation_targets = preprocess_targets(california_housing_dataframe.tail(5000))
validation_targets.describe()plt.figure(figsize=(13, 8))
ax = plt.subplot(1, 2, 1)
ax.set_title("Validation Data")
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'] / training_targets['median_house_value'].max())
plt.plot()def my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None):'''输入函数:param features: 特征列:param targets: 目标值:param batch_size: batch size:param shuffle: 是否乱序:param num_epochs: epoch的数量:return: 一个迭代批次数据,包含特征列和标签'''ds = Dataset.from_tensor_slices((dict(features), targets))ds = ds.batch(batch_size=batch_size)if shuffle:ds.shuffle(buffer_size=10000)features, labels = ds.make_one_shot_iterator().get_next()return features, labelsdef construct_feature_columns(input_features):''':param input_features:特征:return: 构造的特征列'''return set([tf.feature_column.numeric_column(key=my_feature)for my_feature in input_features])def train_model(learning_rate,steps,batch_size,training_examples,training_targets,validation_examples,validation_targets):periods = 10steps_per_period = steps // periodsmy_optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)linear_regressor = tf.estimator.LinearRegressor(feature_columns=construct_feature_columns(training_examples),optimizer=my_optimizer)print("Training model.....")training_rmse = []validation_rmse = []for period in range(0, periods):# 开始训练linear_regressor.train(input_fn=lambda: my_input_fn(training_examples,training_targets['median_house_value'],batch_size=batch_size),steps=steps_per_period)# 预测数据集的处理training_predictions = linear_regressor.predict(input_fn=lambda: my_input_fn(training_examples,training_targets['median_house_value'],num_epochs=1,shuffle=False))training_predictions = np.array([item['predictions'][0] for item in training_predictions])# 验证数据集的处理validation_predictions = linear_regressor.predict(input_fn=lambda: my_input_fn(validation_examples,validation_targets['median_house_value'],num_epochs=1,shuffle=False))validation_predictions = np.array([item['predictions'][0] for item in validation_predictions])tmp_training_rmse = math.sqrt(metrics.mean_squared_error(training_predictions, training_targets))tmp_validation_rmse = math.sqrt(metrics.mean_squared_error(validation_predictions, validation_targets))print("period %02d: %0.2f" % (period, tmp_training_rmse))training_rmse.append(tmp_training_rmse)validation_rmse.append(tmp_validation_rmse)print("Model training finished")# 输出结果图plt.ylabel("RMSE")plt.xlabel("Periods")plt.title("Root Mean Squred Error vs. Periods")plt.tight_layout()plt.plot(training_rmse, labels="training")plt.plot(validation_rmse, labels="validation")plt.legend()return linear_regressor# 训练模型
linear_regressor = train_model(learning_rate=0.00003,steps=500,batch_size=1,training_examples=training_examples,training_targets=training_targets,validation_examples=validation_examples,validation_targets=validation_targets
)# 在测试数据集上评估模型
california_housing_test_data = pd.read_csv('data.csv', sep=',')
test_examples = preprocess_features(california_housing_test_data)
test_targets = preprocess_targets(california_housing_test_data)predict_test_input_fn = lambda: my_input_fn(test_examples,test_targets['median_house_value'],num_epochs=1,shuffle=False
)test_predictions = linear_regressor.predict(input_fn=predict_test_input_fn)
test_predictions = np.array([item['predictions'][0] for item in test_predictions])RMSE = math.sqrt(metrics.mean_squared_error(test_predictions, test_targets)
)print("Final RMSE (on test data): %0.2f" % RMSE)

机器学习的训练数据(Training Dataset)、测试数据(Testing Dataset)和验证数据(Validation Dataset)相关推荐

  1. 训练集(trainning set),测试机(testing set),验证集(validation set)

    1.交叉验证 交叉验证是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize). 2.训练集,验证集(注意区别交叉验证数据集),测试集 一般做预测分析时,会将数据分为 ...

  2. 用训练好的paddlepaddle模型继续训练模型和验证数据ckpt

    # 模型加载 model = hub.Module(name='ernie', task='seq-cls', num_classes=14) tokenizer = model.get_tokeni ...

  3. 交叉检验---训练数据,验证数据和测试数据

    本文来自 https://blog.csdn.net/piaoyu94/article/details/78694045 内容: 最近在Coursera上学习Data Analysis课程,课程论坛中 ...

  4. 训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)

    普通train/test set 直接将训练数据划分为两部分,一部分用来做训练train set,一部分用来固定作为测试集test set.然后反复更换超参在训练集上进行训练,使用测试集依次测试,进行 ...

  5. 设计数据层组件并在层间传递数据

    Angela Crocker.Andy Olsen 和 Edward Jezierski Microsoft Corporation 2002年8月 适用于:     Microsoft® .NET ...

  6. Excel的检验数据的标准(数据验证-数据的有效性)

    工作中往往会涉及到很多数据的处理,有些时候需要验证数据是否符合某个标准,比如学生的成绩,Excel中很好的给我们提供了检验数据的标准. Excel的数据验证可以是 数据类型:整数,小数 日期 文本长度 ...

  7. 关于机器学习的训练数据、验证数据和测试数据的形象比喻

    机器学习最明显的一个特点是需要大量的数据.特别对监督学习来说,就是需要大量的带标签数据(labeled data). 很多入门的朋友很快就会遇见模型训练和测试这两个阶段,进而也就了解到带标签数据是要被 ...

  8. 训练数据,验证数据和测试数据

    一般做预测分析时,会将数据分为两大部分.一部分是训练数据,用于构建模型,一部分是测试数据,用于检验模型.但是,有时候模型的构建过程中也需要检验模型,辅助模型构建,所以会将训练数据在分为两个部分:1)训 ...

  9. 轻轻松松使用StyleGAN2(六):StyleGAN2 Encoder是怎样加载训练数据的?源代码+中文注释,dataset_tool.py和dataset.py

    上一篇文章里,我们简单介绍了StyleGAN2 Encoder的一部分源代码,即:projector.py和project_images.py,内容请参考: 轻轻松松使用StyleGAN2(五):St ...

最新文章

  1. 服务器设备监控系统,服务器设备监控系统
  2. Leetcode: Top K Frequent Elements
  3. Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持
  4. windows自带的压缩,解压缩命令
  5. 集成运算放大电路实验报告_模电总结:第三章、集成运算放大电路
  6. 详细设计 存储分配_【存储论文笔记】Windows Azure Storage
  7. 【9108】模拟数学计算器
  8. pyspark分类算法之多层感知机神经网络分类器模型实践【MLPClassifier】
  9. 数学建模应用系列之经济问题
  10. Java 查询Word是否存在关键字,并保留word路径到txt
  11. 声卡性能测试软件,RightMark Audio Analyzer音频声卡测试软件
  12. 爱奇艺发布年报:四季度运营大幅减亏,今年提质增效追盈利
  13. 2020年即将推出的智能手环APP定制开发
  14. iphone iOS 更换手机铃声 免itunes
  15. Makefile中echo和@echo、和的区别
  16. python文章抄袭检测_CSDN文章被洗稿、抄袭严重!用Python做一个“基于搜索引擎的文章查重工具”,解决!...
  17. android 输入法如何启动流程_Android程序打开和关闭输入法
  18. Win10 更改桌面背景为图片不生效,马上自动变为纯色黑色
  19. arduino环境esp32跑freertos系统实现触摸检测及wifi控制
  20. 探店通系统,短视频矩阵源码,抖音矩阵系统,look

热门文章

  1. 2020统计局的行政划分表_湖州市有几个区和县?湖州市2020年县级以上区划名单...
  2. 【MatConvNet】配置GPU
  3. Github查看文件历史提交和修改记录
  4. ORB-SLMA3的学习笔记
  5. MATLAB中数组的原始索引和线性索引之间相互进行转换
  6. MATLAB编程思想
  7. Windows下anyproxy的配置文件路径
  8. 【Qt串口调试助手】1.6 - QTimer定时自动发送
  9. ConcurrentHashMap 底层原理,你真的理解了吗?
  10. 【CVTE Web后台开发实习生 线下面试】总结