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函数缺省值与引用学习笔记分享
Feb 10 Python
python命令行参数sys.argv使用示例
Jan 28 Python
Python 字符串操作方法大全
Mar 11 Python
分析用Python脚本关闭文件操作的机制
Jun 28 Python
python版学生管理系统
Jan 10 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
谈谈Python中的while循环语句
Mar 10 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 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
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
php绘制一个矩形的方法
2015/01/24 PHP
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
python创建进程fork用法
2015/06/04 Python
Python 内置函数complex详解
2016/10/23 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
理财投资建议书
2014/03/12 职场文书
2014年个人委托书范本
2014/10/13 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
社区活动总结
2015/02/04 职场文书
中学生自我评价范文
2015/03/03 职场文书
团委工作总结2015
2015/04/02 职场文书
幼儿园开学通知
2015/04/24 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
工伤调解协议书
2016/03/21 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS