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二叉树遍历的实现方法
Nov 21 Python
python实现颜色空间转换程序(Tkinter)
Dec 31 Python
python2.7实现爬虫网页数据
May 25 Python
python多线程http压力测试脚本
Jun 25 Python
python 字典操作提取key,value的方法
Jun 26 Python
Pycharm保存不能自动同步到远程服务器的解决方法
Jun 27 Python
Django 自动生成api接口文档教程
Nov 19 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
python实现logistic分类算法代码
Feb 28 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 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 file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
PHP微信API接口类
2016/08/22 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
js的表单操作 简单计算器
2011/12/29 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
详解python中的json的基本使用方法
2016/12/21 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
Python os.access()用法实例
2019/02/18 Python
python算法题 链表反转详解
2019/07/02 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
师范毕业生求职自荐信
2013/09/25 职场文书
法人授权委托书
2014/04/03 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
初三语文教学反思
2016/03/03 职场文书
php 原生分页
2021/04/01 PHP
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript