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输出一个杨辉三角的例子
Jun 13 Python
跟老齐学Python之类的细节
Oct 13 Python
python 垃圾收集机制的实例详解
Aug 20 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
python实现字符串和字典的转换
Sep 29 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
django最快程序开发流程详解
Jul 19 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
Python OpenCV超详细讲解基本功能
Apr 02 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
php中文字母数字验证码实现代码
2008/04/25 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
深入PHP数据加密详解
2013/06/18 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
axios学习教程全攻略
2017/03/26 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python使用心得之获得github代码库列表
2014/06/25 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
struct和class的区别
2015/11/20 面试题
超市营业员岗位职责
2013/12/20 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android