Tensorflow之多元线性回归问题(以波士顿房价预测为例)
一、根据波士顿房价信息进行预测,多元线性回归+特征数据归一化
#读取数据
%matplotlib notebook import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd #能快速读取常规大小的文件。Pandas能提供高性能、易用的数据结构和数据分析工具
from sklearn.utils import shuffle #随机打乱工具,将原有序列打乱,返回一个全新的顺序错乱的值 #读取数据文件
df = pd.read_csv("data/boston.csv",header=0) #显示数据描述信息
# print(df.describe())
# print(df) #数据准备 #获取df的值
df = df.values #把df转换成np的数组格式
df = np.array(df) #特征数据归一化
#对特征数据{0到11}列 做(0-1)归一化
for i in range(12):
df[:,i] = (df[:,i]-df[:,i].min())/(df[:,i].max()-df[:,i].min()) #x_data为归一化后的前12列特征数据
x_data = df[:,:12] #y_data为最后1列标签数据
y_data = df[:,12] #模型定义 #定义特征数据和标签数据的占位符
#shape中None表示行的数量未知,在实际训练时决定一次带入多少行样本,从一个样本的随机SDG到批量SDG都可以
x = tf.placeholder(tf.float32,[None,12],name = "X") #12个特征数据(12列)
y = tf.placeholder(tf.float32,[None,1],name = "Y") #1个标签数据(1列) #定义模型函数
#定义了一个命名空间.
#命名空间name_scope,Tensoflow计算图模型中常有数以千计节点,在可视化过程中很难一下子全部展示出来/
#因此可用name_scope为变量划分范围,在可视化中,这表示在计算图中的一个层级
with tf.name_scope("Model"): # w 初始化值为shape=(12,1)的随机数
w = tf.Variable(tf.random_normal([12,1],stddev=0.01),name="W") # b 初始化值为1.0
b = tf.Variable(1.0,name="b") # w和x是矩阵相乘,用matmul,不能用mutiply或者*
def model(x,w,b):
return tf.matmul(x,w) + b #预测计算操作,前向计算节点
pred = model(x,w,b) #模型训练 #设置训练超参数
#迭代轮次
train_epochs = 50 #学习率
learning_rate = 0.01 #定义均方差损失函数
#定义损失函数
with tf.name_scope("LossFunction"):
loss_function = tf.reduce_mean(tf.pow(y-pred,2)) #均方误差 #创建优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function) #声明会话
sess = tf.Session() #定义初始化变量的操作
init = tf.global_variables_initializer() #启动会话
sess.run(init) #迭代训练
for epoch in range(train_epochs):
loss_sum = 0.0
for xs,ys in zip(x_data,y_data): xs = xs.reshape(1,12)
ys = ys.reshape(1,1)
#feed数据必须和Placeholder的shape一致
_,loss = sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys}) loss_sum = loss_sum + loss
#打乱数据顺序,防止按原次序假性训练输出
x_data,y_data = shuffle(x_data,y_data) b0temp = b.eval(session=sess) #训练中当前变量b值
w0temp = w.eval(session=sess) #训练中当前权重w值
loss_average = loss_sum/len(y_data) #当前训练中的平均损失 print("epoch=",epoch+1,"loss=",loss_average,"b=",b0temp,"w=",w0temp) #模型应用
n = np.random.randint(506) #随机确定一条来看看效果
print(n)
x_test = x_data[n] x_test = x_test.reshape(1,12)
predict = sess.run(pred,feed_dict={x:x_test})
print("预测值:%f"%predict) target = y_data[n]
print("标签值:%f"%target)
二、根据波士顿房价信息进行预测,多元线性回归+特征数据归一化+可视化
#读取数据
%matplotlib notebook import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd #能快速读取常规大小的文件。Pandas能提供高性能、易用的数据结构和数据分析工具
from sklearn.utils import shuffle #随机打乱工具,将原有序列打乱,返回一个全新的顺序错乱的值 #读取数据文件
df = pd.read_csv("data/boston.csv",header=0) #显示数据描述信息
# print(df.describe())
# print(df) #数据准备 #获取df的值
df = df.values #把df转换成np的数组格式
df = np.array(df) #特征数据归一化
#对特征数据{0到11}列 做(0-1)归一化
for i in range(12):
df[:,i] = (df[:,i]-df[:,i].min())/(df[:,i].max()-df[:,i].min()) #x_data为归一化后的前12列特征数据
x_data = df[:,:12] #y_data为最后1列标签数据
y_data = df[:,12] #模型定义 #定义特征数据和标签数据的占位符
#shape中None表示行的数量未知,在实际训练时决定一次带入多少行样本,从一个样本的随机SDG到批量SDG都可以
x = tf.placeholder(tf.float32,[None,12],name = "X") #12个特征数据(12列)
y = tf.placeholder(tf.float32,[None,1],name = "Y") #1个标签数据(1列) #定义模型函数
#定义了一个命名空间.
#命名空间name_scope,Tensoflow计算图模型中常有数以千计节点,在可视化过程中很难一下子全部展示出来/
#因此可用name_scope为变量划分范围,在可视化中,这表示在计算图中的一个层级
with tf.name_scope("Model"): # w 初始化值为shape=(12,1)的随机数
w = tf.Variable(tf.random_normal([12,1],stddev=0.01),name="W") # b 初始化值为1.0
b = tf.Variable(1.0,name="b") # w和x是矩阵相乘,用matmul,不能用mutiply或者*
def model(x,w,b):
return tf.matmul(x,w) + b #预测计算操作,前向计算节点
pred = model(x,w,b) #模型训练 #设置训练超参数
#迭代轮次
train_epochs = 50 #学习率
learning_rate = 0.01 #定义均方差损失函数
#定义损失函数
with tf.name_scope("LossFunction"):
loss_function = tf.reduce_mean(tf.pow(y-pred,2)) #均方误差 #创建优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function) #声明会话
sess = tf.Session() #定义初始化变量的操作
init = tf.global_variables_initializer() #启动会话
sess.run(init) #迭代训练
loss_list = [] #用于保存loss值的列表
for epoch in range(train_epochs):
loss_sum = 0.0
for xs,ys in zip(x_data,y_data): xs = xs.reshape(1,12)
ys = ys.reshape(1,1)
#feed数据必须和Placeholder的shape一致
_,loss = sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys}) loss_sum = loss_sum + loss loss_list.append(loss) #每步添加一次
#打乱数据顺序,防止按原次序假性训练输出
x_data,y_data = shuffle(x_data,y_data) b0temp = b.eval(session=sess) #训练中当前变量b值
w0temp = w.eval(session=sess) #训练中当前权重w值
loss_average = loss_sum/len(y_data) #当前训练中的平均损失 # loss_list.append(loss_average) #每轮添加一次
print("epoch=",epoch+1,"loss=",loss_average,"b=",b0temp,"w=",w0temp)
plt.plot(loss_list) #模型应用
n = np.random.randint(506) #随机确定一条来看看效果
print(n)
x_test = x_data[n] x_test = x_test.reshape(1,12)
predict = sess.run(pred,feed_dict={x:x_test})
print("预测值:%f"%predict) target = y_data[n]
print("标签值:%f"%target)
三、根据波士顿房价信息进行预测,多元线性回归+特征数据归一化+可视化+TensorBoard可视化
#读取数据
%matplotlib notebook import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd #能快速读取常规大小的文件。Pandas能提供高性能、易用的数据结构和数据分析工具
from sklearn.utils import shuffle #随机打乱工具,将原有序列打乱,返回一个全新的顺序错乱的值 #读取数据文件
df = pd.read_csv("data/boston.csv",header=0) #显示数据描述信息
# print(df.describe())
# print(df) #数据准备 #获取df的值
df = df.values #把df转换成np的数组格式
df = np.array(df) #特征数据归一化
#对特征数据{0到11}列 做(0-1)归一化
for i in range(12):
df[:,i] = (df[:,i]-df[:,i].min())/(df[:,i].max()-df[:,i].min()) #x_data为归一化后的前12列特征数据
x_data = df[:,:12] #y_data为最后1列标签数据
y_data = df[:,12] #模型定义 #定义特征数据和标签数据的占位符
#shape中None表示行的数量未知,在实际训练时决定一次带入多少行样本,从一个样本的随机SDG到批量SDG都可以
x = tf.placeholder(tf.float32,[None,12],name = "X") #12个特征数据(12列)
y = tf.placeholder(tf.float32,[None,1],name = "Y") #1个标签数据(1列) #定义模型函数
#定义了一个命名空间.
#命名空间name_scope,Tensoflow计算图模型中常有数以千计节点,在可视化过程中很难一下子全部展示出来/
#因此可用name_scope为变量划分范围,在可视化中,这表示在计算图中的一个层级
with tf.name_scope("Model"): # w 初始化值为shape=(12,1)的随机数
w = tf.Variable(tf.random_normal([12,1],stddev=0.01),name="W") # b 初始化值为1.0
b = tf.Variable(1.0,name="b") # w和x是矩阵相乘,用matmul,不能用mutiply或者*
def model(x,w,b):
return tf.matmul(x,w) + b #预测计算操作,前向计算节点
pred = model(x,w,b) #模型训练 #设置训练超参数
#迭代轮次
train_epochs = 50 #学习率
learning_rate = 0.01 #定义均方差损失函数
#定义损失函数
with tf.name_scope("LossFunction"):
loss_function = tf.reduce_mean(tf.pow(y-pred,2)) #均方误差 #创建优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function) #声明会话
sess = tf.Session() #定义初始化变量的操作
init = tf.global_variables_initializer() #为TensorBoard可视化准备数据
#设置日志存储目录
logdir='d:/log'
#创建一个操作,用于记录损失值loss,后面在TensorBoard中SCALARS栏可见
sum_loss_op = tf.summary.scalar("loss",loss_function) #把所有需要记录摘要日志文件的合并,方便一次性写入
merged = tf.summary.merge_all() #启动会话
sess.run(init) #创建摘要的文件写入器
#创建摘要writer,将计算图写入摘要文件,后面在Tensorflow中GRAPHS栏可见
writer = tf.summary.FileWriter(logdir,sess.graph)
#迭代训练
loss_list = [] #用于保存loss值的列表
for epoch in range(train_epochs):
loss_sum = 0.0
for xs,ys in zip(x_data,y_data): xs = xs.reshape(1,12)
ys = ys.reshape(1,1) #feed数据必须和Placeholder的shape一致
_,summary_str,loss = sess.run([optimizer,sum_loss_op,loss_function],feed_dict={x:xs,y:ys})
writer.add_summary(summary_str,epoch) loss_sum = loss_sum + loss # loss_list.append(loss) #每步添加一次
#打乱数据顺序,防止按原次序假性训练输出
x_data,y_data = shuffle(x_data,y_data) b0temp = b.eval(session=sess) #训练中当前变量b值
w0temp = w.eval(session=sess) #训练中当前权重w值
loss_average = loss_sum/len(y_data) #当前训练中的平均损失 loss_list.append(loss_average) #每轮添加一次
print("epoch=",epoch+1,"loss=",loss_average,"b=",b0temp,"w=",w0temp)
plt.plot(loss_list) #模型应用
n = np.random.randint(506) #随机确定一条来看看效果
print(n)
x_test = x_data[n] x_test = x_test.reshape(1,12)
predict = sess.run(pred,feed_dict={x:x_test})
print("预测值:%f"%predict) target = y_data[n]
print("标签值:%f"%target)
———网易云课堂《深度学习应用开发Tensorflow实践》学习记录
Tensorflow之多元线性回归问题(以波士顿房价预测为例)的更多相关文章
- 利用TensorFlow实现多元线性回归
利用TensorFlow实现多元线性回归,代码如下: # -*- coding:utf-8 -*- import tensorflow as tf import numpy as np from sk ...
- 机器学习实战二:波士顿房价预测 Boston Housing
波士顿房价预测 Boston housing 这是一个波士顿房价预测的一个实战,上一次的Titantic是生存预测,其实本质上是一个分类问题,就是根据数据分为1或为0,这次的波士顿房价预测更像是预测一 ...
- 波士顿房价预测 - 最简单入门机器学习 - Jupyter
机器学习入门项目分享 - 波士顿房价预测 该分享源于Udacity机器学习进阶中的一个mini作业项目,用于入门非常合适,刨除了繁琐的部分,保留了最关键.基本的步骤,能够对机器学习基本流程有一个最清晰 ...
- TensorFlow从0到1之TensorFlow实现多元线性回归(16)
在 TensorFlow 实现简单线性回归的基础上,可通过在权重和占位符的声明中稍作修改来对相同的数据进行多元线性回归. 在多元线性回归的情况下,由于每个特征具有不同的值范围,归一化变得至关重要.这里 ...
- 基于sklearn的波士顿房价预测_线性回归学习笔记
> 以下内容是我在学习https://blog.csdn.net/mingxiaod/article/details/85938251 教程时遇到不懂的问题自己查询并理解的笔记,由于sklear ...
- 《用Python玩转数据》项目—线性回归分析入门之波士顿房价预测(二)
接上一部分,此篇将用tensorflow建立神经网络,对波士顿房价数据进行简单建模预测. 二.使用tensorflow拟合boston房价datasets 1.数据处理依然利用sklearn来分训练集 ...
- chapter02 回归模型在''美国波士顿房价预测''问题中实践
#coding=utf8 # 从sklearn.datasets导入波士顿房价数据读取器. from sklearn.datasets import load_boston # 从sklearn.mo ...
- 【udacity】机器学习-波士顿房价预测
import numpy as np import pandas as pd from Udacity.model_check.boston_house_price import visuals as ...
- 基于MXNET框架的线性回归从零实现(房价预测为例)
1.基于MXNET框架的线性回归从零实现例子 下面博客是基于MXNET框架下的线性回归从零实现,以一个简单的房屋价格预测作为例子来解释线性回归的基本要素.这个应用的目标是预测一栋房子的售出价格(元). ...
随机推荐
- ramdisk配置、解压、创建rootfs、启动简单分析
关键词:ramdisk.rdint..init.ramfs.__initramfs_start.__initramfs_size.rootfs.ramfs.populate_rootfs().gzip ...
- LRU的实现(使用list)
首先是LRU的定义,LRU表示最近最少使用,如果数据最近被访问过,那么将来被访问的几率也更高. 所以逻辑应该是每次都要将新被访问的页放到列表头部,如果超过了list长度限制,就将列表尾部的元素踢出去. ...
- linux kernel下输入输出console如何实现【转】
转自:https://blog.csdn.net/skyflying2012/article/details/41078349 最近工作在调试usb虚拟串口,让其作为kernel启动的调试串口,以及u ...
- 使用EA将源码转化为类图
EA简介: EA 全名 Enterprise Architect,是一款著名的 UML 建模软件.在软件架构设计与逆向工程中具有重要作用.软件十分小巧(< 60MB ),并且有汉化破解版.推荐大 ...
- 201871010102-常龙龙《面向对象程序设计(java)》第十五周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- pyEcharts安装及使用指南(最新)
pyEcharts安装及使用指南(最新): 网上资料大多数是0.5X的版本, 这里我给出我的0.5版本连接https://www.cnblogs.com/dgwblog/p/11811562.html ...
- [转]在.NET Core 2.x中将多个强类型设置实例与命名选项一起使用
自1.0版之前,ASP.NET Core已使用“ 选项”模式配置强类型设置对象.从那时起,该功能获得了更多功能.例如,引入了ASP.NET Core 1.1 IOptionsSnapshot,它允许您 ...
- java高并发系列 - 第11天:线程中断的几种方式
java高并发系列第11篇文章. 本文主要探讨一下中断线程的几种方式. 通过一个变量控制线程中断 代码: package com.itsoku.chat05; import java.util.con ...
- Python GUI开发,效率提升10倍的方法!
1 框架简介 这个框架的名字叫 PySimpleGUI,它完全基于Python语言,能非常方便地开发GUI界面,代码量相比现有框架减少50%到90%.并且,它提供了极为友好的Python风格的接口,大 ...
- Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析
Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...