python 实现一个简单的线性回归案例


Posted in Python onDecember 17, 2020
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : 自实现一个线性回归.py
# @Author: 赵路仓
# @Date : 2020/4/12
# @Desc :
# @Contact : 398333404@qq.com
import os

import tensorflow as tf


def linear_regression():
  """
  自实现一个线性回归
  :return:
  """
  # 命名空间
  with tf.variable_scope("prepared_data"):
    # 准备数据
    x = tf.random_normal(shape=[100, 1], name="Feature")
    y_true = tf.matmul(x, [[0.08]]) + 0.7
    # x = tf.constant([[1.0], [2.0], [3.0]])
    # y_true = tf.constant([[0.78], [0.86], [0.94]])

  with tf.variable_scope("create_model"):
    # 2.构造函数
    # 定义模型变量参数
    weights = tf.Variable(initial_value=tf.random_normal(shape=[1, 1], name="Weights"))
    bias = tf.Variable(initial_value=tf.random_normal(shape=[1, 1], name="Bias"))
    y_predit = tf.matmul(x, weights) + bias

  with tf.variable_scope("loss_function"):
    # 3.构造损失函数
    error = tf.reduce_mean(tf.square(y_predit - y_true))

  with tf.variable_scope("optimizer"):
    # 4.优化损失
    optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)

  # 收集变量
  tf.summary.scalar("error", error)
  tf.summary.histogram("weights", weights)
  tf.summary.histogram("bias", bias)

  # 合并变量
  merged = tf.summary.merge_all()

  # 创建saver对象
  saver = tf.train.Saver()

  # 显式的初始化变量
  init = tf.global_variables_initializer()

  # 开启会话
  with tf.Session() as sess:
    # 初始化变量
    sess.run(init)

    # 创建事件文件
    file_writer = tf.summary.FileWriter("E:/tmp/linear", graph=sess.graph)

    # print(x.eval())
    # print(y_true.eval())
    # 查看初始化变量模型参数之后的值
    print("训练前模型参数为:权重%f,偏置%f" % (weights.eval(), bias.eval()))

    # 开始训练
    for i in range(1000):
      sess.run(optimizer)
      print("第%d次参数为:权重%f,偏置%f,损失%f" % (i + 1, weights.eval(), bias.eval(), error.eval()))

      # 运行合并变量操作
      summary = sess.run(merged)
      # 将每次迭代后的变量写入事件
      file_writer.add_summary(summary, i)

      # 保存模型
      if i == 999:
        saver.save(sess, "./tmp/model/my_linear.ckpt")

    # # 加载模型
    # if os.path.exists("./tmp/model/checkpoint"):
    #   saver.restore(sess, "./tmp/model/my_linear.ckpt")

    print("参数为:权重%f,偏置%f,损失%f" % (weights.eval(), bias.eval(), error.eval()))
    pre = [[0.5]]
    prediction = tf.matmul(pre, weights) + bias
    sess.run(prediction)
    print(prediction.eval())

  return None


if __name__ == "__main__":
  linear_regression()

以上就是python 实现一个简单的线性回归案例的详细内容,更多关于python 实现线性回归的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
PyQt5响应回车事件的方法
Jun 25 Python
python的一些加密方法及python 加密模块
Jul 11 Python
django创建简单的页面响应实例教程
Sep 06 Python
python中with用法讲解
Feb 07 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
Jun 22 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 Python
Python趣味挑战之教你用pygame画进度条
May 31 Python
python BeautifulSoup库的安装与使用
Dec 17 #Python
python中翻译功能translate模块实现方法
Dec 17 #Python
python中count函数知识点浅析
Dec 17 #Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
Dec 17 #Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 #Python
python使用smtplib模块发送邮件
Dec 17 #Python
python实现计算器简易版
Dec 17 #Python
You might like
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
python实现文件名批量替换和内容替换
2014/03/20 Python
Python的time模块中的常用方法整理
2015/06/18 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
Python3实现二叉树的最大深度
2019/09/30 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
信息技术培训感言
2014/03/06 职场文书
车间统计员岗位职责
2015/04/14 职场文书
员工工作表扬信
2015/05/05 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
Python time库的时间时钟处理
2021/05/02 Python
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript