Tensorflow实现多元线性回归
TensorFlow实现多元线性回归
在实现简单线性回归的基础上,可通过在权重和占位符的声明中稍作修改来对相同的数据进行多元线性回归。
简单线性回归和多元线性回归的主要不同在于权重,且系数的数量始终等于输入特征的数量。
这里是波士顿房价数据集的多重线性回归的代码,使用 3 个输入特征。由于每个特征具有不同的值范围,归一化变得至关重要。
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt #绘图
#为了使训练有效,输入应该被归一化,所以定义一个函数来归一化输入数据.
def normalize(X)
mean=np.mean(X)#计算全局平均值
std=np.std(X) #计算全局标准差
X=(X-mean)/std#标准化:对原始数据进行变换到均值为0,标准差为1范围内
return X
#这里添加一个额外的固定输入值将权重和偏置结合起来。(最好写几个矩阵看一下每行加一然后转置)
def append_bias_reshape(festures,lables):
m=features.shape[0] #获取feature的行数
n=features.sahpe[1] #获取feature的列数
x=np.reshape(np.c_[np.ones(m),features],[m,n+1])#重新组合成新的行列数目
y=np.reshape(lables,[m,1])#重新组合成新的行列数目
return x,y
#注意到X_train包含所需要的特征,可以在这里对数据进行归一化处理,也可以添加偏置并对数据重构:
boston=tf.contrib.learn.datasets.load_dataset('boston')
X_train,Y_train=boston.data,boston.target #全部数据
X_train=normalize(X_train)
X_train,Y_train=append_bias_reshape(X_train,Y_train)
m=len(X_train)#返回列表元素的个数
n=3+1
#为训练数据声明 TensorFlow 占位符。观测占位符 X 的形状变化
X=tf.placeholder(tf.float32,name='X',shape=[m,n])
Y=tf.placeholder(tf.float32,name='Y')
#通过随机数初始化权重:
w=tf.Variable(tf.random_normal([n,1]))
#定义要用于预测的线性回归模型。现在需要矩阵乘法来完成这个任务:
Y_hat=tf.matmul(X,w)
#为了更好地求微分,定义损失函数
loss=tf.reduce_mean(tf.square(Y-Y_hat,name='loss'))
#选择正确的优化器:
tf.train.GredientDescentOptimizer(learing_rate=0.01).minimize(loss)
#初始化操作符:
init_op=tf.globle_variables_initializer()
total=[]
#计算图
with tf.Session() as sess:
sess.run(init_op)
writer=tf.summary.FileWriter('graphs',sess.graph)
for i in range(100):
total_loss=0
for x,y in zip(X_Train,Y_train)
_,l=sess.run([optimizer,loss],feed_dict={X:X_train,Y=Y_train})
total_loss+=l #total_loss为总的loss值
total.append(total_loss/len) #len为一个epoch的总的迭代次数
print('Epoch{0}:Loss{1}'.format(i,total_loss/len))
writer.close()
b_value,w_value=sess.run([b,w])
#绘制损失函数
plt.plot(total)
plt.show()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2021-04-11 第六周总结