【线性回归】| Linear Regression实现示例

简介: 【线性回归】| Linear Regression实现示例
# 首先观察一下数据的分布
import pandas as pd
# 读取数据集
df = pd.read_csv('./data.csv')
df.head(5)

image.png


import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
# 利用这些点在平面坐标上进行绘图,将数据样本转化成数组
points = np.array(df)
# 提取列表中的第一列为x的值
X = points[:,0]
# 提取列表中的第二列为y的值
Y = points[:,1]
# 绘制散点图
plt.scatter(X,Y)
<matplotlib.collections.PathCollection at 0x1cf2d5e2448>

image.png

数据样本如上图所示,接下来使用梯度下降法拟合出一条直线满足次样本的分布


# 思路:列出损失函数 loss = ∑i(wxi + b - yi)**2
# 对于每一轮的迭代都会更新参数w与b,更新方程为:w' = w - lr*(dloss/dw)
# 一次梯读下降对w,b进行更新
b_start = 0
w_start = 0
iteration = 900
learning_rate = 0.0001
N = len(points)
# 一步的梯度下降,对b,w进行更新并返回
def Step_GradientDescent(b,w):
    lr = learning_rate
    # 求b,w的偏导数值
    for i in range(0,len(points)):
        dw = 2*X[i]*(w*X[i]+b-Y[i])/N
        db = 2*(w*X[i]+b-Y[i])/N
    # 进行更新
    w_updata = w - lr*dw
    b_updata = b - lr*db
    return b_updata,w_updata
# 实现梯度下降算法
def Total_GradientDescent(b,w):
    iteration_times = iteration
    for i in range(0,iteration_times):
        b,w = Step_GradientDescent(b,w)
    return b,w
# 计算方差
def Deviation_value(b,w):
    loss = 0
    for i in range(0,len(points)):
        loss += (w*X[i]+b-Y[i])**2
    return loss
def main():
    b = b_start
    w = w_start
    print("Before__b:{0},w:{1},Deviation value:{2}".format(b,w,Deviation_value(b,w)))
    b,w = Total_GradientDescent(b,w)
    print("After__b:{0},w:{1},Deviation value:{2}".format(b,w,Deviation_value(b,w)))
    return b,w
b,w = main()


可见得到了训练出来的结果

Before__b:0,w:0,Deviation value:556510.7834490552
After__b:0.0574654741275659,w:1.4440202845195163,Deviation value:11557.105373357175
# 根据以上结果,绘制出一条直线,与前述的散点图进行拟合
# axline((0, 0), (1, 1), linewidth=4, color='r')
plt.subplot(111)
plt.scatter(X,Y)
plt.axline((0,0.0574654741275659),slope=1.4440202845195163,linewidth=2, color='blue')
<matplotlib.lines._AxLine at 0x1cf2deeeb48>

image.png

这个结果是比较理想的,现在稍微更改一下学习率learning_rate与迭代次数iteration,损失值都会偏大,如下图所示:

learning_rate=0.0001,iteration=1100

image.png

learning_rate=0.0001,iteration=1000

image.png

目录
相关文章
|
机器学习/深度学习 人工智能 供应链
|
机器学习/深度学习 算法 网络架构
Dataset之MNIST:MNIST(手写数字图片识别+csv文件)数据集简介、下载、使用方法之详细攻略
Dataset之MNIST:MNIST(手写数字图片识别+csv文件)数据集简介、下载、使用方法之详细攻略
Dataset之MNIST:MNIST(手写数字图片识别+csv文件)数据集简介、下载、使用方法之详细攻略
|
7天前
|
云安全 人工智能 自然语言处理
|
11天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
990 35
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
667 4
|
7天前
|
机器学习/深度学习 人工智能 数据可视化
1秒生图!6B参数如何“以小博大”生成超真实图像?
Z-Image是6B参数开源图像生成模型,仅需16GB显存即可生成媲美百亿级模型的超真实图像,支持中英双语文本渲染与智能编辑,登顶Hugging Face趋势榜,首日下载破50万。
527 25
|
14天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
859 59
Meta SAM3开源:让图像分割,听懂你的话
|
4天前
|
弹性计算 网络协议 Linux
阿里云ECS云服务器详细新手购买流程步骤(图文详解)
新手怎么购买阿里云服务器ECS?今天出一期阿里云服务器ECS自定义购买流程:图文全解析,阿里云服务器ECS购买流程图解,自定义购买ECS的设置选项是最复杂的,以自定义购买云服务器ECS为例,包括付费类型、地域、网络及可用区、实例、镜像、系统盘、数据盘、公网IP、安全组及登录凭证详细设置教程:
195 114