热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tensorflow学习笔记四——回归预测

本文基于tensorflow官网教程(https:tensorflow.google.cntutorialskerasbasic_regression)机器环境:ubuntu14.
本文基于tensorflow官网教程(https://tensorflow.google.cn/tutorials/keras/basic_regression)
机器环境:ubuntu14.04+tensorflow1.8.0
1.回归问题简介
回归(Regression)问题不同于分类问题,分类问题的输出域是离散的标签,而回归问题的输出
域是连续的。分类问题解决对输入的划分,如水果的分类、衣服的分类;而回归问题解决的是对
变化量的预测,如股票价格的预测、房价的预测等。本文的回归问题使用了波士顿房价数据集。
#coding=utf8
#包含模块
import tensorflow as tf
from tensorflow import keras
import numpy as np
#载入数据集
boston_housing=keras.datasets.boston_housing
(train_data,train_labels),(test_data,test_labels)=boston_housing.load_data()
#打乱顺序
order=np.argsort(np.random.random(train_labels.shape))
train_data=train_data[order]
train_labels=train_labels[order]
#打印数据集格式
print("Training set shape:{}".format(train_data.shape))
print("Test set shape:{}".format(test_data.shape))

tensorflow学习笔记四——回归预测
训练集有404个数据,测试集有102个数据,每个数据都共享有13个特征。包括:
tensorflow学习笔记四——回归预测
1.人均犯罪率2.住宅用地超过25000平方英尺的所占比例3.4....这些影响房价的因素
比如数据0的房价是a,人均犯罪率k1,住宅用地超过25000平方英尺所占比例为k2,因素3的值为
k3,...,因素13的值为k13,那么我们可以从这13个特征中分析其与房价a的关系,从而对一个新的
区域,只需要知道这13个特征的值,即可对其房价做出预测。
#打印单个数据
print("Train_data[0]:")
print(train_data[0])
print("Train_label[0]:")
print(train_labels[0])
tensorflow学习笔记四——回归预测
可以看出,训练集数据0的数据为以上13个房价影响因素的值,标签为其房价
#使用pandas打印数据的值
#安装pandas $sudo apt-get install python-pandas
import pandas as pd
#定义房价影响因素的名称 如CRIM代表人均犯罪率
column_names=['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',
                'TAX', 'PTRATIO', 'B', 'LSTAT']
df=pd.DataFrame(train_data,columns=column_names)
print(df.head())
tensorflow学习笔记四——回归预测
对输入数据进行规范化处理,不对输入数据进行规划处理,模型也能收敛,但是训练
过程更加困难,而且泛化能力不强
#数据的规范化处理
#求训练集均值
mean=train_data.mean(axis=0)
#求训练集标准差
std=train_data.std(axis=0)
#规范化处理 减去均值 再除以标准差
#注意求均值和标准差只用训练集数据,但是
#测试集同样要规范化处理
train_data=(train_data-mean)/std
test_data=(test_data-mean)/std
2.神经网络
#神经网络模型
def build_model():
    model=keras.Sequential([
keras.layers.Dense(64,activation=tf.nn.relu,input_shape=(train_data.shape[1],)),
keras.layers.Dense(64,activation=tf.nn.relu),keras.layers.Dense(1)])
    optimizer=tf.train.RMSPropOptimizer(0.001)
    model.compile(loss='mse',optimizer=optimizer,metrics=['mae'])
    return model
model=build_model()
model.summary()
tensorflow学习笔记四——回归预测
输入层为全连接层,64节点,**函数relu;隐藏层1为全连接层,64节点,**函数为
relu;输出层为全连接层,单个节点
#神经网络模型
def build_model():
    model=keras.Sequential([
keras.layers.Dense(64,activation=tf.nn.relu,input_shape=(train_data.shape[1],)),
keras.layers.Dense(64,activation=tf.nn.relu),keras.layers.Dense(1)])
    optimizer=tf.train.RMSPropOptimizer(0.001)
    model.compile(loss='mse',optimizer=optimizer,metrics=['mae'])
    return model
model=build_model()
model.summary()
#打印训练过程进度
#每个100训练轮的结束打印轮数
class PrintEpo(keras.callbacks.Callback):
    def on_epoch_end(self,epoch,logs):
        if (epoch+1) % 100 == 0: print(epoch+1)
#训练神经网络
EPOCHS=500
#将训练集以0.2的百分比划分训练集和验证集
history=model.fit(train_data,train_labels,epochs=EPOCHS,
validation_split=0.2,verbose=0,callbacks=[PrintEpo()])
#绘制训练过程损失
import matplotlib.pyplot as plt
def plot_history(history):
    plt.figure()
    plt.xlabel('Epoch')
    plt.ylabel('Mean Abs Error [1000$]')
    #绘制训练集损失
    plt.plot(history.epoch,np.array(history.history['mean_absolute_error']),
label='Train loss')
    #绘制验证集损失
    plt.plot(history.epoch,np.array(history.history['val_mean_absolute_error']),
label='Val loss')
    plt.legend()
    #限制y的取值
    plt.ylim([0,5])
plot_history(history)
plt.show()
tensorflow学习笔记四——回归预测
可以看出,200轮之后,神经网络在验证集上的损失减小得比较慢,因此在训练模型
时,可以通过回调函数指定模型的停止条件
#设置停止条件
early_stop=keras.callbacks.EarlyStopping(mOnitor='val_loss',patience=20)
#开始训练
history=model.fit(train_data,train_labels,epochs=EPOCHS,
validation_split=0.2,verbose=0,
callbacks=[early_stop,PrintEpo()])
#绘图
plot_history(history)
#打印训练过程loss变化
plt.show()
tensorflow学习笔记四——回归预测
从图像中可以看出,平均误差收敛到$2500,与$15000相比,$2500不是个非常大的
偏差
#在测试集上验证误差
[loss,mae]=model.evaluate(test_data,test_labels,verbose=0)
#以7位浮点数打印平均绝对误差值
print("Testing set Mean Abs Error:${:7.2f}".format(mae*1000))
tensorflow学习笔记四——回归预测


推荐阅读
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 每年,意甲、德甲、英超和西甲等各大足球联赛的赛程表都是球迷们关注的焦点。本文通过 Python 编程实现了一种生成赛程表的方法,该方法基于蛇形环算法。具体而言,将所有球队排列成两列的环形结构,左侧球队对阵右侧球队,首支队伍固定不动,其余队伍按顺时针方向循环移动,从而确保每场比赛不重复。此算法不仅高效,而且易于实现,为赛程安排提供了可靠的解决方案。 ... [详细]
  • 在Windows命令行中,通过Conda工具可以高效地管理和操作虚拟环境。具体步骤包括:1. 列出现有虚拟环境:`conda env list`;2. 创建新虚拟环境:`conda create --name 环境名`;3. 删除虚拟环境:`conda env remove --name 环境名`。这些命令不仅简化了环境管理流程,还提高了开发效率。此外,Conda还支持环境文件导出和导入,方便在不同机器间迁移配置。 ... [详细]
  • 本文介绍了如何使用 Google Colab 的免费 GPU 资源进行深度学习应用开发。Google Colab 是一个无需配置即可使用的云端 Jupyter 笔记本环境,支持多种深度学习框架,并且提供免费的 GPU 计算资源。 ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
  • 本文提供了PyTorch框架中常用的预训练模型的下载链接及详细使用指南,涵盖ResNet、Inception、DenseNet、AlexNet、VGGNet等六大分类模型。每种模型的预训练参数均经过精心调优,适用于多种计算机视觉任务。文章不仅介绍了模型的下载方式,还详细说明了如何在实际项目中高效地加载和使用这些模型,为开发者提供全面的技术支持。 ... [详细]
  • 探讨了 Python 中 UTF-8 编码的中文字符在某些情况下被误识别为 GB2312 的问题,并提供了详细的代码示例和环境信息。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 在Conda环境中高效配置并安装PyTorch和TensorFlow GPU版的方法如下:首先,创建一个新的Conda环境以避免与基础环境发生冲突,例如使用 `conda create -n pytorch_gpu python=3.7` 命令。接着,激活该环境,确保所有依赖项都正确安装。此外,建议在安装过程中指定CUDA版本,以确保与GPU兼容性。通过这些步骤,可以确保PyTorch和TensorFlow GPU版的顺利安装和运行。 ... [详细]
  • FreeBSD环境下PHP GD库安装问题的详细解决方案
    在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ... [详细]
  • 机器学习中的标准化缩放、最小-最大缩放及鲁棒缩放技术解析 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
author-avatar
Stupid锋_891
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有