最小二乘法求解一元线性回归

该博客介绍了如何运用最小二乘法解决一元线性回归问题。首先,定义了线性回归模型和损失函数,接着通过Python代码实现最小二乘法,对给定的学习时间和得分数据进行拟合,求得模型参数w和b。随后,计算了均方误差并绘制了散点图及拟合曲线。最后,利用模型预测了学习时间为80时的得分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最小二乘法求解一元线性回归

介绍线性回归模型以及简单一元线性回归模型的解法。

通过代码实现最小二乘法求解一元线性回归实例,并对结果进行预测。

一、线性回归

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、回归问题的解决

在这里插入图片描述

三、最小二乘法介绍

在这里插入图片描述
在这里插入图片描述

四、最小二乘法求解线性回归

在这里插入图片描述

五、实例验证

案例背景:数据中参数x为学习时间,y为得分。通过最小二乘法求解参数w,b,均方差。并预测x=80时的得分。

数据链接:
链接: https://pan.baidu.com/s/1KVw_9O5o9vqQnpgRNfLGVQ
提取码:8u8e

1.导入数据
# 导入必要库
import numpy as np
import matplotlib.pyplot as plt
points = np.genfromtxt('E:/PythonData/machine_learning/data.csv',delimiter=',')

# 查看前5行数据
points[:5]

在这里插入图片描述

2.绘制散点图
# 分别提取points中的x和y数据
x = points[:,0]
y = points[:,1]

# 绘制散点图
plt.scatter(x,y)
plt.show()

在这里插入图片描述

3.定义损失函数
# 损失函数是系数w,b的函数,另外还要传入数据x,y
def computer_cost(w,b,points):
    total_cost = 0
    M = len(points)
  
    # 逐点计算平方损失误差,然后求平均数
    for i in range(M):
        x = points[i,0]
        y = points[i,1]
        total_cost +=(y - w *x - b)**2
    # 取平均
    return total_cost/M
4.定义算法拟合函数
# 先定义求均值函数
def average(data):
    sum = 0
    num = len(data)
    for i in range(num):
        sum+=data[i]
    return sum/num
    
# 定义核心拟合函数
def fit(points):
    M = len(points)
    x_bar = average(points[:,0])
    
    sum_yx = 0
    sum_x2 = 0
    sum_delta = 0
    
    for i in range(M):
        x = points[i,0]
        y = points[i,1]
        sum_yx += y*(x-x_bar)
        sum_x2 += x**2
        
    # 根据公式计算w
    w = sum_yx/(sum_x2 - M*(x_bar**2))
    
    # 再次创建for循环计算b
    for i in range(M):
        x = points[i,0]
        y = points[i,1]
        sum_delta += y-w*x
    b = sum_delta/M
    return w,b 
5.测试(得到参数w,b,均方误差)
# 将测试集传入拟合函数中
w,b = fit(points)
print('w is :',w)
print('b is :',b)

cost = computer_cost(w,b,points)
print('cost is ',cost)

在这里插入图片描述

6.绘制拟合曲线
plt.scatter(x,y)

# 针对每一个x,绘制出预测的值
pred_y = w*x+b

# 画出拟合曲线,颜色设置为红色
plt.plot(x,pred_y,c='r')

在这里插入图片描述

7.预测分数
# 给出参数x,得出预测结果
pred_y1 = w*80+b
print(pred_y1)

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜的乄第七章

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值