代码如下:

import numpy as np
import matplotlib.pyplot as plt
from numpy import array""" 使用最小二乘法,拟合出一元线性回归模型:z = wx + b。
一元的意思是样本x通过一个属性描述,原本可能是矢量x_i = (x_i1, x_i2...,x_id)被例如颜色,大小...
属性描述,现在只有一个x_i1描述,则直接把矢量x_i看成标量,w也是标量计算出使得损失最小的w和b,
画出拟合直线和原始的散点图
点距离拟合直线越远,代表误差越大
"""# 画出样例的真实分布,输入样本x和真实标记y
def plot_origin(points: array) -> None:""":param points: array类型的二维数组:return:"""arr_x = points[:, 0]  # return list: 所有元素(子数组)中的第一个元素:xarr_y = points[:, 1]  # return list: 所有元素(子数组)中的第二个元素:y# 画出散点图:照理说学的时间越长,考试分数越高plt.scatter(arr_x, arr_y)plt.show()# 2. 策略:求均方误差(损失函数)
def compute_cost(w: float, b: float, points: array) -> float:""" 计算均方误差(损失函数):预测输出和真实标记之间的差距: y - (wx + b)z = wx + b 为我们要拟合的线性模型:param w: 线性模型参数:param b: 线性模型参数:param points: array类型的二维数组:所有样例:return:  输出E(w,b) 均方误差值"""total_cost = 0m = len(points)  # 样本个数m# 计算均方误差for i in range(m):x_i = points[i, 0]  # 第i个样例的第一个元素:xy_i = points[i, 1]  # 第i个样例的第二个元素:ytotal_cost += (y_i - w * x_i - b) ** 2return total_cost / m  # 均方误差"""3. 算法:拟合:学得z = wx+b 近似于真实标记y
使用基于均方误差最小化的 最小二乘参数估计
求能使得均方误差最小的w和b:损失函数分别对w,b求偏导=0
以下代码都基于公式推导出来的w,b的表示方法
"""# 求列表内元素平均值
def avg(lst):l = len(lst)return sum(lst[i] for i in range(l)) / ldef fit(points: array) -> tuple:x_avg = avg(points[:, 0])  # 样本均值m = len(points)# 求wnumerator, denominator = 0, -m * x_avg ** 2  # w公式的分子,分母for i in range(m):x_i, y_i = points[i, 0], points[i, 1]numerator += y_i * (x_i - x_avg)denominator += x_i ** 2w = numerator / denominator# 求bsum_y = 0for i in range(m):x_i, y_i = points[i, 0], points[i, 1]sum_y += y_ib = (sum_y - w * x_avg * m) / mreturn w, b# 画出拟合函数:一元线性回归模型
def plot_fit(arr_x: array, arr_y: array) -> None:plt.scatter(arr_x, arr_y)  # 画散 点 图# array类型可以直接对每个元素乘上一个常数,不用for循环慢慢一个个乘predict_y = w * arr_x + b  # 拟合的线性模型:预测标记yplt.plot(x, predict_y, c='r')  # 画 经过x,y的曲线/直线plt.show()if __name__ == '__main__':points = np.genfromtxt('D:\Pycharm\code\MY_machine_learning\mydata\data.csv', delimiter=',')  # arrayx = points[:, 0]  # return array: 所有元素(子数组)中的第一个元素:xy = points[:, 1]  # return array: 所有元素(子数组)中的第二个元素:yw, b = fit(points)print('w, b分别为', w, b)print('损失为:', compute_cost(w, b, points))plot_fit(x, y)

运行结果如下:

附data.csv网盘提取

:百度网盘 请输入提取码

提取码:rstx

机器学习之实现一元线性回归模型相关推荐

  1. 机器学习(一元线性回归模型)

    模型:一元线性回归模型 回归分析:建立方程模拟两个或者多个变量之间是如何相互关联,被预测的变量称为因变量(结果),用来进行预测的变量称为 自变量(输入参数),当输入参数只有一个(输出1个)时,称为一元 ...

  2. 传统机器学习模型解说01:一元线性回归模型

    引入 年薪和工作年限有关吗? 可见两个变量之间存在明显的线性关系,而根据常识,工作年限是因,年薪是果. 那么,是否存在某个模型,如图中的一次函数直线,来描述两个变量之间的关系呢? 原理简述与背景介绍 ...

  3. 一元线性回归模型及其Python案例

    回归的概念:(其实就是用曲线拟合的方式探索数据规律) 回归问题的分类: 一元线性回归: 线性回归模型是利用线性拟合的方式探寻数据背后的规律.如下图所示,先通过搭建线性回归模型寻找这些散点(也称样本点) ...

  4. 【统计学笔记】如何判断变量间相关关系,并建立一元线性回归模型?

    本章内容: 判断两个变量间是否有相关关系,且关系强度如何? 如何建立一元线性回归模型,且模型效果如何? 如何利用回归方程进行预测? 为什么要进行残差分析,及如何进行分析? 索引

  5. 计量经济学-简单的一元线性回归模型之一

    一元回归模型 回归分析和相关分析之间的差别 相关分析研究的是变量之间的线性相关性,而回归分析要研究的是解释变量和被解释变量之间的平均关系.相关分析中,变量都是随机变量:而回归分析中,解释变量是确定的, ...

  6. 计量经济学——一元线性回归模型(例题)

    题目:对一元线性回归模型 Y i = β 0 + β 1 X i + μ i Y_{i}=\beta_{0}+\beta_{1}X_{i}+\mu_{i} Yi​=β0​+β1​Xi​+μi​,试证明 ...

  7. 《计量经济学》学习笔记之一元线性回归模型

    注意:本笔记以文字概括为主,公式为辅,问为啥,因为贴图片和打公式对于我来说,太烦啦~所以,就只把每个章节里觉得重要的一些概念记下来. 书籍:<计量经济学(第三版)>–李子奈 导航 下一章: ...

  8. 32 回归分析——一元线性回归模型

    1.一元线性回归模型 线性模型 2.最小二乘法 3.假设检验 4.预测 5.评估 6.误差 7.决定系数 8.一元线性回归方程

  9. 一元线性回归模型预测双十一销售额

    又是一年一度"剁手节"有人说感到今年的双十一冷清了许多,很多人都很好奇今年双十一会产生多少交易额?SPSAU这里打算科学预测一下今年的天猫"双十一"的销售额. ...

  10. 基于R语言一元线性回归模型实例及代码

    基于R语言一元线性回归模型实例及代码 题目描述 数据特征及可视化 建立模型与初步评价 (自己写lm()代码) 显著性检验 整体显著性检验 数学理论 系数显著性检验 代码实现系统显著性检验 回归诊断 异 ...

最新文章

  1. PHP的Smarty
  2. LeetCode实战:最长有效括号
  3. 智能车竞赛创意组别对应的FQA
  4. 安装TokuDB引擎
  5. 放弃腾讯75W年薪,回老家当公务员,提离职被领导教育,网友:leader嫉妒了
  6. vue 将字符串最后一个字符给替换_前端开发:Vue项目实战-Music
  7. 01数据结构——绪论
  8. 树分类、线性回归和树回归的感性认知
  9. 实验四------实验十二
  10. JB的Python之旅-爬虫篇--requestsScrapy
  11. 软件安全测试培训大纲
  12. 硬件知识:视频分配器、画面分割器、矩阵、延长器相关知识介绍
  13. Mir2Ei客户端真彩色支持
  14. mysql8不区分大小写_不看不知道,这年头学个字母都有这么多门道(附学习资源)...
  15. 腾讯云下centos git 克隆远程仓库
  16. 暗影精灵4清灰、加硅脂
  17. 使用Python控制手机(二)关于淘宝的那些事
  18. python||报错‘gbk‘ codec can‘t decode byte 0x80 in position 8: illegal multibyte sequence
  19. Unity之UGUI脚本自动生成
  20. 什么是GHZ?炫云到底是怎么收费的?

热门文章

  1. MySql关系型数据库——node
  2. 制图中比例尺的一些问题
  3. 【观察】PowerMax:高端存储,中国制造
  4. 前端面试录音整理(私人版)
  5. 【JAVASCRIPT】-【AES加密解密】01、前端AES加密解密的方式
  6. 多节点什么网络取得技术性突破_中国学者研究“多节点量子网络”取得基础性突破...
  7. 怎么修改数据库服务器名字,sql改数据库名称
  8. led屏背后线路安装图解_液晶拼接屏安装方法图解及接线方法
  9. 上帝掷骰子吗?量子物理史话——读书笔记
  10. 关于dijistra算法的理解