线性回归一元回归python实现

1. 什么是回归

回归分析是研究自变量与因变量之间数量变化关系的一种分析方法,它主要是通过因变量Y与影响它的自变量Xi(i1,2,3…)之间的回归模型,衡量自变量Xi对因变量Y的影响能力的,进而可以用来预测因变量Y的发展趋势。就是 通过数学分析运算 得出是什么规律让x变成了y,找到这个规律用来预测

2.一元线性回归

回归模型中只含有一个自变量x,主要用来处理一个自变量x与一个因变量y之间的线性关系。

3. 损失函数

损失函数是来度量模型预测值与真实值不一样的程度的,或者说度量预测错误的程度,损失函数值越小,模型就越好。在回归问题中,误差平方和是回归任务中最常用的性能度量。这里就可以令损失函数L(a,b)等于误差平方和。

列:

身高 体重
160
58
165
63
158
57
172
65
159
62
176
66
160
58
162
59
171
62

根据下列数据,设计一个预测体重的函数,输入身高,输出体重 \large f(x) = ax + b 其中 a 是权重

b 是偏置,那么怎么知道预测的值和真实的值差距大小,使用误差平方公式, 也叫损失函数。

\large L(a, b) = \sum_{i=1}^{n} (f(x_i) - y_i)^2 = \sum_{i=1}^{n} (ax_i + b - y_i)^2

 其值越小,误差越小 那么怎么才能知道设置合适的 误差a和偏置b 通过对损失函数求导得出公式

\large L_a(a, b) = \sum_{i = 1}^{n} 2(ax_i + b - y_i)x_i

求导过程 链式法则

\large \\ 1. u(a)' = (ax + b -y)' = x \\ 2. f(u)' = (u^2)' = 2u \\ u(a) * f(u) = 2ux = 2(ax + b -y) x


求导过程 如上 得出结果

\large L_b(a, b) = \sum_{i =1}^n 2(ax_i + b -y_i)

得到一个二元方程 解出该方程就得出了 a 和 b的解

python 实现代码

"""
一元线性回归计算
"""
import numpy as np
import sympy


class Line:
    dtype = np.dtype([('x', int), ('y', int)])
    data = np.array([
        (160, 58), (165, 63), (158, 57), (172, 65), (159, 62), (176, 66), (160, 58), (162, 59), (171, 62)
    ], dtype=dtype)

    def __init__(self):
        var_1 = var_2 = var_3 = 0
        var_4 = var_5 = var_6 = 0
        for i in self.data:
            var_1 = var_1 + (i['x'] * i['x'])
            var_2 = var_2 + (1 * i['x'])
            var_3 = var_3 + (i['y'] * i['x'])

            var_4 = var_4 + i['x']
            var_5 = var_5 + 1
            var_6 = var_6 + i['y']
        a, b = sympy.symbols('a b')
        fx1 = 2 * (a * var_1 + b * var_2 - var_3)
        fx2 = 2 * (a * var_4 + b * var_5 - var_6)
        ret = sympy.solve([fx1, fx2], a, b)
        self.a = ret[a].p / ret[a].q
        self.b = ret[b].p / ret[a].q

    def predict(self, height):
        return height * self.a + self.b


line = Line()
print(line.predict(180))

运行结果

C:\Users\admin\PycharmProjects\机器学习01\venv\Scripts\python.exe C:/Users/admin/PycharmProjects/机器学习01/线性回归/最小二乘法_1.py 
67.52225047679593

进程已结束,退出代码0

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值