深度学习-tensorflow

利用tensorflowflow解决多元线性回归问题

1.实例-波士顿问题为例

	#利用tensorflow解决多元线性回归问题--波士顿房价
	#导入需要的第三方库
	%matplotlib inline
	import tensorflow as tf
	import numpy as np
	import pandas as pd
	import matplotlib.pyplot as ply
	from sklearn.utils import shuffle
	#读取数据并对数据进行预处理
	z_data=pd.read_csv("data/boston.csv")
	#将数据集转变为numpy的array数组格式,方便处理
	z_data=np.array(z_data)
	#对特征数据进行归一化处理(0,1),避免个别特征对预测结果影响过大
	for i in range(12):
	    z_data[:,i]=(z_data[:,i]-z_data[:,i].min())/(z_data[:,i].max()-z_data[:,i].min())
	#将特征与标签分离(即将输入与输出分离)
	xdata=z_data[:,:12]
	ydata=z_data[:,12]
	#创建模型
	#定义特征与标签的占位符
	X=tf.placeholder(tf.float32,[None,12],name="X")
	Y=tf.placeholder(tf.float32,[None,1],name="Y")
	#定义一个命名空间,方便可视化
	with tf.name_scope("m1"):
	    #定义变量w,b
	    W=tf.Variable(tf.random_normal([12,1]),name="W")
	    b=tf.Variable(0.0,name="b")
	    #定义模型函数
	    def model1(X,W,b):
	        return tf.matmul(X,W)+b
	    #定义预测值
	    pre=model1(X,W,b)  
	    #创建会话
	    sess=tf.Session()
	    init=tf.global_variables_initializer()
	    sess.run(init)
	    #训练模型
	#设置训练超参数与损失数组
	train_num=60
	learn_rate=0.01
	loss_list=[]
	#定义损失函数:MSE
	loss_func=tf.reduce_mean(tf.pow((Y-pre),2))
	#设置训练优化器
	optimizer=tf.train.GradientDescentOptimizer(learn_rate).minimize(loss_func)
	#迭代训练
	for epoch in range(train_num):
	    loss_sum=0.0
	    for xs,ys in zip(xdata,ydata):
	        xs=xs.reshape(1,12)
	        ys=ys.reshape(1,1)
	        _,loss=sess.run([optimizer,loss_func],feed_dict={X:xs,Y:ys})
	        loss_sum=loss_sum+loss
	    loss_aver=loss_sum/len(ydata)
	    loss_list.append(loss_aver)
	    xdata,ydata=shuffle(xdata,ydata)
	    #损失曲线
	ply.plot(loss_list)
	![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607115935851.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29nZWlvag==,size_16,color_FFFFFF,t_70)
	#利用训练好模型进行预测
	n=np.random.randint(506)
	#预测结果
	xtest=xdata[n]
	xtest=xtest.reshape(1,12)
	p=sess.run(pre,feed_dict={X:xtest})
	print("预测结果:%f"% p)
	print("实际结果:%f"% ydata[n])
	预测结果:16.796743
	实际结果:17.400000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值