一元线性回归——最小二乘法详细介绍

系列文章目录

最小二乘法算法介绍以及python代码实现


前言

形如:y=k*x+b的图像。我们可以根据点到直线的距离计算出距离,使得距离最小。得到一个关于k与b的一元线性方程。为了使得距离最小,在高等数学里面一般就是求导、当倒数等于零时取最小。所以说我们要对这个一元线性方程对k,b分别进行求导。

最后算出两个关于k和b的式子到这一步基本上我们回归方程基本构建完成。


提示:以下是本篇文章正文内容,下面案例可供参考

一、最小二乘法介绍

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用python实现步骤

1.引入库

代码如下(示例):导入画图以及numpy库

import numpy as np
import matplotlib.pyplot as plt

2.读入数据

代码如下(示例):编写一个读取csv的函数,提取出数据以及标签

def reed_csv():
    data = np.genfromtxt("太阳镜销售数据集.csv", delimiter=',')
    x = data[:, 1]
    y = data[:, 0]
    print(data)
    return x, y
#运行结果:
[[ 75.   2.]
 [ 90.   5.]
 [148.   6.]
 [183.   7.]
 [242.  22.]
 [263.  25.]
 [278.  28.]
 [318.  30.]
 [256.  22.]
 [200.  18.]
 [140.  10.]
 [ 80.   2.]]

3.逻辑实现

3.1这里我用三个自定义函数搞定

第一个函数(kbcost)用于计算斜率以及截距和损失值

# 第一个函
def kbcost(x, y):
    L = len(x)
    # 获取当前数据的长度
    x_sum = np.sum(x)  # 计算和
    y_sum = np.sum(y)
    x_avg = x_sum/L  # 平均值计算
    y_avg = y_sum/L
    tmp1 = 0
    tmp2 = 0
    for i in range(L):  # 在L里面经行循环遍历i
        tmp1 += (x[i]-x_avg)*(y[i]-y_avg) 
        tmp2 += (x[i]-x_avg)**2
    k = tmp1 / tmp2
    b = y_avg - k * x_avg
    cost = 0
    for i in range(L):
        cost += (y[i]-k*x[i]-b)**2
    cost = cost/L
    return k, b, cost

详细介绍:如下公式原理

第二个函数用于画图,将我们求的k,和b值绘制成线性方程

# 第二个函
def darw_L(x, y, k, b):
    plt.scatter(x, y)
    plt.plot(x, k*x+b, 'r')
    plt.show()

最后一个主函数

调用read_csv()函数将变量保存在x,y里面无需参数,

调用kbcost(x,y)函数用于计算k,b,cost传入参数为x,y,\

在进行可视化,画出一元线性回归方程

最后用户随机输入一个值经行预测,并且计算损失值

if __name__ == "__main__":
    x, y = reed_csv()
    k, b, cost = kbcost(x, y)
    print(cost)
    darw_L(x, y, k, b)
    x_in = int(input())
    print(x_in*k+b)
 

总结

最小二乘法是机器学习最重要最基础的一个算法,最小二乘法不是回归分析本身,而是一种用于执行回归分析的技术。它通过最小化预测值与实际值之间的误差平方和来估计回归模型的参数,从而帮助我们找到描述因变量和自变量之间关系的最佳拟合线或曲线。

完整项目参考github(gitee)ZMCpythonProject: 人工智能机器学习代码 (gitee.com)

记得点赞加收藏

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值