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的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
浅析python递归函数和河内塔问题
Apr 18 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
Django权限机制实现代码详解
Feb 05 Python
python正则表达式之对号入座篇
Jul 24 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
Python selenium根据class定位页面元素的方法
Feb 26 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
Django  ORM 练习题及答案
Jul 19 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
python实现图片素描效果
Sep 26 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
我的论坛源代码(七)
2006/10/09 PHP
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php foreach、while性能比较
2009/10/15 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
python单元测试unittest实例详解
2015/05/11 Python
python实现RSA加密(解密)算法
2016/02/17 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
详解Django配置JWT认证方式
2020/05/09 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
英国森林假期:Forest Holidays
2021/01/01 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
大学生学习生活的自我评价
2013/11/01 职场文书
关于爱情的广播稿
2014/01/16 职场文书
个人简历中自我评价
2014/02/11 职场文书
小学开学典礼主持词
2014/03/19 职场文书
项目投资意向书
2014/04/01 职场文书
高中校园广播稿
2014/10/21 职场文书
旷课检讨书范文
2015/01/27 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL