Python-Tensorflow基础(三)-线性回归与非线性回归示例

简介: Python-Tensorflow基础(三)-线性回归与非线性回归示例

线性回归:


首先还是先贴上代码:

importtensorflowastfimportnumpyasnp#可以看做为样本#随机生成100个点x_data=np.random.rand(100)
y_data=x_data*0.1+0.2#构造一个线性模型b=tf.Variable(1.)
k=tf.Variable(0.)
y=k*x_data+b#定义二次代价函数loss=tf.reduce_mean(tf.square(y_data-y))
#定义一个梯度下降法进行训练的优化器optimizer=tf.train.GradientDescentOptimizer(0.2)
#定义最小化代价函数train=optimizer.minimize(loss)
init=tf.global_variables_initializer()
withtf.Session() assess:
sess.run(init)
forstepinrange(201):
sess.run(train)
ifstep%20==0:
print(step,sess.run([k,b]))

代码分析:


这里就是简单定义了一个线性模型,作为已知的样本数据

importtensorflowastfimportnumpyasnp#可以看做为样本#随机生成100个点x_data=np.random.rand(100)
y_data=x_data*0.1+0.2#构造一个线性模型b=tf.Variable(1.)
k=tf.Variable(0.)
y=k*x_data+b

然后自己构造一个根据数据特征构造模型:

#构造一个线性模型b=tf.Variable(1.)
k=tf.Variable(0.)
y=k*x_data+b

这里用到的优化器和二次函数在后面会给详细的讲解,这里就无脑用就行了

#定义二次代价函数
loss = tf.reduce_mean(tf.square(y_data-y))
#定义一个梯度下降法进行训练的优化器
optimizer =  tf.train.GradientDescentOptimizer(0.2)
#定义最小化代价函数
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for step in range(201):
        sess.run(train)
        if step%20 ==0:
            print(step,sess.run([k,b]))

image.png

非线性回归:


import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#使用numpy生成200个随机点
#生成范围[-0.5,0.5]的200个点,下面生成200行1列的数据
#但是之后要使用二维数据,因此增加一个维度
x_data = np.linspace(-0.5,0.5,200)[:,np.newaxis]#,np.newaxis相当于增加一个维度 :200*1
noise = np.random.normal(0,0.02,x_data.shape)
y_data = np.square(x_data) + noise
#定义两个placeholder
#下面[]里面表示行不确定,列只有一列
x = tf.placeholder(tf.float32,[None,1])#None 表示任意行 与样本形状对应
#None的大小取决于传入的数据格式
y = tf.placeholder(tf.float32,[None,1])
#定义神经网络中间层
#输入层是x 输出层是y  中间层作为调整
#神经元定义为[1,10],是因为输入的神经元是1个,中间层的神经元定义了10个
#权重
Weight_L1 = tf.Variable(tf.random_normal([1,10]))
#偏置值
biases_L1 = tf.Variable(tf.zeros([1,10]))
#信号的总和
Wx_plus_b_L1 = tf.matmul(x,Weight_L1) + biases_L1
#L1作为中间层的输出,用双曲正切函数作用于信号的总和
L1 = tf.nn.tanh(Wx_plus_b_L1)
#定义神经网络输出层
#用于连接输入和输出层
Weight_L2 = tf.Variable(tf.random_normal([10,1]))
#输出层神经元只有一个,所以是[1,1]
biases_L2 = tf.Variable(tf.zeros([1,1]))
Wx_plus_b_L2 = tf.matmul(L1,Weight_L2) + biases_L2
#通过接口函数得到预测值
prediction = tf.nn.tanh(Wx_plus_b_L2)
#二次代价函数
loss = tf.reduce_mean(tf.square(y-prediction))
#使用梯度下降法训练
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
with tf.Session() as sess:
    #变量初始化
    sess.run(tf.global_variables_initializer())
    for _ in range(2000):
        #进行训练
        sess.run(train_step,feed_dict={x:x_data,y:y_data})
    #获得预测值
    prediction_value = sess.run(prediction, feed_dict={x:x_data})
    #画图
    plt.figure()
    plt.scatter(x_data,y_data)
    plt.plot(x_data,prediction_value,'r-',lw=5)
    plt.show()

演示训练结果:


image.png

目录
相关文章
|
1月前
|
数据挖掘 Python
Python示例,展示如何找到最近一次死叉之后尚未形成金叉的位置
【10月更文挑战第7天】金融分析中,“死叉”指短期移动平均线(如MA5)跌破长期移动平均线(如MA10),而“金叉”则相反。本文提供Python代码示例,用于找出最近一次死叉后未形成金叉的位置,涵盖移动平均线计算、交叉点判断及结果输出等步骤,适合金融数据分析。
35 4
|
2月前
|
Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
|
2月前
|
存储 Python
Python示例:分解一个不多于指定位的正整数
Python示例:分解一个不多于指定位的正整数
|
11天前
|
数据挖掘 Python
Python示例,展示如何找到最近一次死叉之后尚未形成金叉的位置
金融分析中,“死叉”指短期移动平均线(如MA5)跌破长期移动平均线(如MA10),而“金叉”则相反。本文提供Python代码示例,用于找出最近一次死叉后未形成金叉的位置,涵盖移动平均线计算、交叉点判断及结果输出等步骤,适合金融数据分析。
18 1
|
18天前
|
机器学习/深度学习 数据可视化 Python
使用最小二乘法进行线性回归(Python)
【10月更文挑战第28天】本文介绍了使用Python实现最小二乘法进行线性回归的步骤,包括数据准备、计算均值、计算斜率和截距、构建线性回归方程以及预测和可视化结果。通过示例代码展示了如何从创建数据点到最终绘制回归直线的完整过程。
|
1月前
|
机器学习/深度学习 算法 Python
使用Python实现简单的线性回归模型
【10月更文挑战第2天】使用Python实现简单的线性回归模型
18 1
|
2月前
|
机器学习/深度学习 数据采集 算法
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
有多种方法可以处理时间序列数据中的噪声。本文将介绍一种在我们的研究项目中表现良好的方法,特别适用于时间序列概况中数据点较少的情况。
50 1
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
|
2月前
|
Python
Python编程的循环结构小示例(二)
Python编程的循环结构小示例(二)
|
27天前
|
Linux Android开发 开发者
【Python】GUI:Kivy库环境安装与示例
这篇文章介绍了 Kivy 库的安装与使用示例。Kivy 是一个开源的 Python 库,支持多平台开发,适用于多点触控应用。文章详细说明了 Kivy 的主要特点、环境安装方法,并提供了两个示例:一个简单的 Hello World 应用和一个 BMI 计算器界面。
41 0
|
1月前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
67 0