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 不关闭控制台的实现方法
Oct 23 Python
Python使用Flask框架同时上传多个文件的方法
Mar 21 Python
Python Web框架Tornado运行和部署
Oct 19 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
python使用requests.session模拟登录
Aug 09 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
python 实时调取摄像头的示例代码
Nov 25 Python
Python实现提取PDF简历信息并存入Excel
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
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
Angular实现form自动布局
2016/01/28 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
js表单登陆验证示例
2016/10/19 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
详解python中index()、find()方法
2019/08/29 Python
python中删除某个元素的方法解析
2019/11/05 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
python压包的概念及实例详解
2021/02/17 Python
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
上海奥佳笔试题面试题
2016/11/16 面试题
工业设计专业个人求职信范文
2013/12/28 职场文书
幼儿园消防安全制度
2014/01/26 职场文书
程序员求职信
2014/04/16 职场文书
科技之星事迹材料
2014/06/02 职场文书
超市理货员岗位职责
2014/07/04 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
鲁迅故居导游词
2015/02/05 职场文书
广告业务员岗位职责
2015/02/13 职场文书
产品质量保证书范本
2015/02/27 职场文书
个人承诺书格式范文
2015/04/29 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技