多元线性回归

news/2025/10/26 12:27:18/文章来源:https://www.cnblogs.com/jifengdakuaitou/p/19166714

TensorFlow1:

import tensorflow as tf

print(tf.__version__)

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

from sklearn.utils import shuffle

%matplotlib notebook

df = pd.read_csv("D:\\data\\boston.csv",header = 0)

df = df.values

df = np.array(df)

#归一化处理,避免特征值取值范围差异过大造成的权值扰动,将值等比例缩放至0到1之间

for i in range(12):

df[:,i] = (df[:,i] -df[:,i].min()) / (df[:,i].max()- df[:,i].min())

x_data = df[:,0:12]

y_data = df[:,12]

x = tf.compat.v1.placeholder(tf.float32,[None,12],name="X")

y = tf.compat.v1.placeholder(tf.float32,[None,1],name="Y")

with tf.name_scope("Model"):

w = tf.Variable(tf.random.normal([12,1],stddev=0.01),name="w")

b = tf.Variable(1.0,name="b")

def model(x,w,b):

return tf.matmul(x,w) + b

pred = model(x,w,b)

with tf.name_scope("LossFunction"):

loss_function = tf.reduce_mean(tf.pow(y-pred,2))

train_epochs = 50

learning_rate = 0.01

optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)

sess = tf.compat.v1.Session()

init = tf.compat.v1.global_variables_initializer()

sess.run(init)

loss_list = []

log_dir = "d:/logs"

loss_average = 0.0

merged = tf.compat.v1.summary.merge_all()

writer = tf.compat.v1.summary.FileWriter(log_dir,sess.graph)

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)

_,loss = sess.run([optimizer,loss_function],feed_dict = {x:xs,y:ys})

# print(type(summary_str),summary_str)

#writer.add_summary(summary_str,epoch)

loss_sum+=loss

x_data,y_data = shuffle(x_data,y_data)

loss_average = loss_sum / len(y_data)

#summary_str = sess.run(sum_loss_op)

#writer.add_summary(summary_str,epoch)

print("epoch:",epoch+1,"loss:",loss_average)

loss_list.append(loss_average)

TensorFlow2:

import tensorflow as tf

print(tf.__version__)

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

from sklearn.utils import shuffle

from sklearn.preprocessing import scale

%matplotlib notebook

df = pd.read_csv("D:\\data\\boston.csv",header = 0)

df = df.values

df = np.array(df)

x_data = df[:,0:12]

y_data = df[:,12]

train_num = 300

valid_num = 100

test_num = len(x_data) - train_num - valid_num

x_train = x_data[:train_num]

y_train = y_data[:train_num]

x_valid = x_data[train_num:train_num + valid_num]

y_valid = y_data[train_num:train_num + valid_num]

x_test = x_data[train_num + valid_num:train_num + valid_num + test_num]

y_test = y_data[train_num + valid_num:train_num + valid_num + test_num]

x_train = tf.cast(scale(x_train),dtype=tf.float32)

x_valid = tf.cast(scale(x_valid),dtype=tf.float32)

x_test = tf.cast(scale(x_test),dtype=tf.float32)

W = tf.Variable(tf.random.normal([12,1],mean=0.0,stddev=0.01),dtype=tf.float32)

B = tf.Variable(tf.zeros(1),dtype=tf.float32)

def model(x,w,b):

return tf.matmul(x,w) + b

train_epochs = 50

learning_rate = 0.01

batch_size = 10

def loss(x,y,w,b):

err = model(x,w,b) - y

squared_err = tf.square(err)

return tf.reduce_mean(squared_err)

def grad(x,y,w,b):

with tf.GradientTape() as tape:

loss_ = loss(x,y,w,b)

return tape.gradient(loss_,[w,b])

optimizer = tf.keras.optimizers.SGD(learning_rate)

loss_list_train = []

loss_list_valid = []

total_step = int(train_num / batch_size)

for epoch in range(train_epochs):

for step in range(total_step):

xs = x_train[step*batch_size:(step+1)*batch_size,:]

ys = y_train[step*batch_size:(step+1)*batch_size]

grads = grad(xs,ys,W,B)

optimizer.apply_gradients(zip(grads,[W,B]))

loss_train = loss(x_train,y_train,W,B).numpy()

loss_valid = loss(x_valid,y_valid,W,B).numpy()

loss_list_train.append(loss_train)

loss_list_valid.append(loss_valid)

print("epoch={:3d},loss_train={:.4f},loss_valid={:.4f}".format(epoch+1,loss_train,loss_valid))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完整教程:由JoyAgent观察AI Agent 发展

完整教程:由JoyAgent观察AI Agent 发展pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

Linux 内核空间 并发竞争处理 共享资源线程同步 - 实践

Linux 内核空间 并发竞争处理 共享资源&线程同步 - 实践2025-10-26 12:26 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importa…

TF1和TF2

TensorFlow2默认采用Eager执行模式即动态图模式,TensorFlow默认采用Graph执行模式即静态图模式,动态图模式相比静态图模式而言,在开发过程中更易于调试,可以像debug python代码一样,去debug TensorFlow计算图的执…

单变量线性回归tensorflow版

TensorFlow1: %matplotlib inline import matplotlib.pyplot as plt import numpy as np import tensorflow as tf np.random.seed(5) x_data = np.linspace(-1,1,100) #help(np.random.randn) #print(np.random.randn…

Spark计算引擎

Spark是一个基于MapReduce思想的分布式通用计算框架,相对于MapReduce,它的升华主要体现在处理结果驻留在了内存中(RDD,即分布式内存的概念,也是将数据进行切片,计算的中间结果驻留在内存中,可以设置切片数,也可以…

【轨物方案】变频器物联网软硬件一站式解决方案 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

人工智能初了解

人工智能、机器学习与深度学习基本概念: 人工智能:一系列促使机器模仿或实现人的智能的方法、技术、理论,包括计算智能、感知智能和认知智能等层次,目前人工智能还处于前两者之间,处于弱人工智能阶段,当机器完全…

173天隧道技术篇防火墙组策略ICMPDNSSMB协议出网判断C2上线解决方案

主要学习的是icmp隧道的搭建 分别的C2的icmp隧道搭建和msf隧道搭建 以及要了解C2支持的各种协议 如何判断主机支持什么协议 Icmp 使用ping ip or domain Ssh 用ssh连接 ip or domain Dns 用 nslookup domain Http 用…

Hbase分布式数据库

Hbase是谷歌对BigTable的开源实现,它是一个分布式数据库,具有容量大,数据结构不固定,列式存储,数据类型单一化,高性能的特点. Hbase能具备以上特点主要基于其表结构设计及底层的hdfs的支持,我们先说一下它的表结…

软考六

软考六Posted on 2025-10-26 12:16 心默默言 阅读(0) 评论(0) 收藏 举报1. 基本概念2. 数据库三级模式两级映像3. 数据库的分析与设计过程4. 模型5. 关系代数

MapReduce并行计算框架

MapReduce是一种编程模型,采用主从集群结构,与Hdfs类似,也是由主节点(JobTracker,在hadoop2.0中,由Yarn代替JobTracker的工作)进行任务的调度与分配,从节点(TaskTracker,在hadoop2.0中,由ApplicationMaster代…

应用安全 ---

应用安全 ---https://down.52pojie.cn/Tools/PEtools/?amp%3BO=A Scylla.v.0.9.8.rar 这有两种方法,一个插件,一个可执行, 我们用可执行,打开选择这个程序,并填入ep地址,点击dump

实用指南:3DGS 如何理解它?

实用指南:3DGS 如何理解它?pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

HDFS文件系统

HDFS文件系统是hadoop生态系统的核心,主要用于分布式文件存储,它具备高可用,流式读取,文件结构简单,跨平台的特点,它的集群采用的是主从结构,分为命名节点和数据节点,命名节点主要用于元数据管理(例如对目录,…

Java 类加载器

Java的类加载器分为四级: 启动类加载器:这个是最基础的,加载的是系统类,例如java.lang.Object类 扩展类加载器:加载的是jre或者lib中的类 应用类加载器:加载的是类路径下的类,就是自己写的那些类 自定义的加载器…

面试总被追问k8s调度器工作原理, 收藏 == 学废

kube-scheduler负责将k8s pod调度到worker节点上。 当你部署pod时,在manifest文件pod规格上会指定cpu、memory、亲和性affinity、污点taints、优先级、持久盘等。 调度器的主要工作是识别create request然后选择满足要…

题解:十二重计数法

题解:十二重计数法 前置:计数基础(组合数,斯特林数) 多项式基础(多项式 exp)题面: 有 \(n\) 个球和 \(m\) 个盒子,要全部装进盒子里。 还有一些限制条件,那么有多少种方法放球?(与放的先后顺序无关) 限制…

Wyn 商业智能软件:3D 可视化大屏搭建与设备利用全指南

Wyn 商业智能软件:3D 可视化大屏搭建与设备利用全指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

什么是Java Lambda

Java Lambda表达式:实质上是将方法作为参数进行传递,一般是在你需要将一个单独的行为作为参数传递给另一个方法时用到 具体语法:t -> t.toString();其中 t 代表入参,如果是有多个,就用()括住,参数之间用逗号…

Java 代理

代理模式:为目标对象(被调用方)提供一个包装类即代理对象,调用方通过调用代理对象来达到调用目标对象的目的,这样就实现调用方与目标对象之间的解耦。 java中的代理模式分为静态代理和动态代理两种。 静态代理编码…