手写线性回归

基于线性回归实现手写数字识别 一、关于数据集从官网 上下载并解压数据集第一步、下载得到的是四个压缩文件。将这四个压缩文件全部进行解压,得到下列一共八个文件,并将这个文件夹改名为MNIST_data,之后将这个文件夹放到你的项目里。第二步、新建一个.py文件,起名为input_data.py将下面的代码复制粘贴到input_data.py中# Copyright 2015 The TensorFlow Authors. All ... 阅读详情

目录

 

导包

创建数据

使用已有的线性回归拟合函数

自己实现线性回归

使用自己实现的线性回归拟合函数


导包

import numpy as np

import matplotlib.pyplot as plt
%matplotlib inline

from sklearn.linear_model import LinearRegression#导入算法

创建数据

X = np.linspace(2,10,20).reshape(-1,1)

# f(x) = wx + b
y = np.random.randint(1,6,size = 1)*X + np.random.randint(-5,5,size = 1)

# 噪声,加盐
y += np.random.randn(20,1)*0.8

plt.scatter(X,y,color =  'red')

使用已有的线性回归拟合函数

lr = LinearRegression()
lr.fit(X,y)

w = lr.coef_[0,0]
b = lr.intercept_[0]
print(w,b)

plt.scatter(X,y)

x = np.linspace(1,11,50)

plt.plot(x,w*x + b,color = 'green')

自己实现线性回归

# 使用梯度下降解决一元一次的线性问题:w,b
class LinearModel(object):
    def __init__(self):#初始化方法
        self.w = np.random.randn(1)[0]
        self.b = np.random.randn(1)[0]
#     数学建模:将数据X和目标值关系用数学公式表达
    def model(self,x):#model 模型,f(x) = wx + b
        return self.w*x + self.b
    def loss(self,x,y):#最小二乘法
        cost = (y - self.model(x))**2
#         梯度就是偏导数,求解两个未知数:w,b
        gradient_w = 2*(y - self.model(x))*(-x)
        gradient_b = 2*(y - self.model(x))*(-1)
        return cost,gradient_w,gradient_b
#     梯度下降
    def gradient_descent(self,gradient_w,gradient_b,learning_rate = 0.1):
#         更新w,b
        self.w -= gradient_w*learning_rate
        self.b -= gradient_b*learning_rate
#     训练fit
    def fit(self,X,y):
        count = 0 #算法执行优化了3000次,退出
        tol = 0.0001
        
        last_w = self.w + 0.1
        last_b = self.b + 0.1
        length = len(X)
        while True:
            if count > 3000:#执行的次数到了
                break
#           求解的斜率和截距的精确度达到要求
            if (abs(last_w - self.w) < tol) and (abs(last_b - self.b) < tol):
                break
            cost = 0
            gradient_w = 0
            gradient_b = 0
            for i in range(length):
                cost_,gradient_w_,gradient_b_ = self.loss(X[i,0],y[i,0])
                cost += cost_/length
                gradient_w += gradient_w_/length
                gradient_b += gradient_b_/length
#             print('---------------------执行次数:%d。损失值是:%0.2f'%(count,cost))
            last_w = self.w
            last_b = self.b
            # 更新截距和斜率
            self.gradient_descent(gradient_w,gradient_b,0.01)
            count+=1
    def result(self):
        return self.w,self.b

使用自己实现的线性回归拟合函数

lm = LinearModel()

lm.fit(X,y)

w_,b_ = lm.result()
print(w_,b_)

plt.scatter(X,y,c = 'red')

plt.plot(x,3.1485*x -1.9334,color = 'green')

plt.plot(x,w*x + b,color = 'blue')

plt.title('自定义的算法拟合曲线',fontproperties = 'KaiTi')

两线重合。

使用JAVA手写一元线性回归算法 回归分析通常包括确定最佳拟合直线的斜率和截距,以及评估模型的拟合度。这样的模型允许我们了解自变量和因变量之间的关系,并且可以用于预测新的因变量取值。 阅读详情

相关推荐

Tensorflow(2): 线性回归及手写数字识别

Machine learning make decisions go right/left : Discrete increase/decrease: Continuous 第一节 线性回归-1 Linear Equation 一般的观测数据都有噪声:且噪声服从mean为0,variance为的正态分布 For example 使用最小二乘法构造loss函数 为预测值与实际值的差的平方,loss越小时,说明预测值与实际值越接近 将模型参数估计的问题转换为minimize loss的

JJJJJJames的博客 706

手写实现线性回归

一元一次拟合f(x)=wx+b 使用已有的线性回归拟合函数 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression X = np.linspace(2, 10, 20).reshape(-1,1) # f(x) = wx + b y = np.random.randint(1, 6, size=1)*X + np.random.randint(-5, 5

糖公子没来过的博客 1041

从零推导到实战:线性回归 (Linear Regression) 的数学原理与Python手写实现

本文详细解析了线性回归(Linear Regression)的数学原理与Python手写实现,从最小二乘法到梯度下降算法,逐步推导并实现了一个完整的线性回归模型。通过对比sklearn的实现,展示了手写模型的准确性,并探讨了特征工程、正则化等进阶技巧。文章还介绍了线性回归在工业实践中的应用挑战及解决方案,适合机器学习初学者和希望深入理解算法原理的开发者。

weixin_29032337的博客 375

【Python】手写线性回归——梯度下降法的包

机器学习入门,手写python线性回归模型、梯度下降法的包,包括理论推导、代码、数据集

I_no_know_answer的博客 1761

机器学习结课大课设:深入线性回归分类与手写数字识别

本章介绍了线性回归的理论基础,并探讨了在分类任务中的应用。通过代码示例,我们了解了如何实现线性回归模型,并通过逻辑函数将模型的输出转换为分类概率。在后续章节中,我们将深入探讨手写数字识别等实际项目中的应用,以及如何使用不同的机器学习和深度学习库来实现更为复杂的模型。sklearn库中包含多个功能模块,以下是一些核心模块的简要介绍:: 包含用于机器学习的数据集。: 提供数据预处理和特征缩放的功能。: 包含用于模型选择和数据集划分的工具,如交叉验证、网格搜索。

weixin_36073714的博客 1133

微信小程序获取用户手机号全流程实战(附完整代码)

本文详细介绍了微信小程序获取用户手机号的全流程实战,包括前端授权、后端解密及安全合规要点。通过传统授权按钮和新版手机号快速验证组件两种方案,帮助开发者高效实现功能,并附完整代码示例。重点解析了微信小程序接口的使用技巧和常见问题解决方案,确保数据安全与用户体验。

weixin_29280219的博客 568

手写线性回归算法(LR)

手写系列是本人学习的相关记录,主打一个自己实现核心代码和手写推导过程,不会调用任何现成包。会分享出来所有代码。水平有限,欢迎大家批评指导。

weixin_42973210的博客 1326

从实验室到生活:构建一份全面的手机相机主观画质评测指南

本文详细介绍了如何从实验室数据转向实际体验,构建全面的手机相机主观画质评测指南。通过基础装备清单、室内外场景实战评测及数据之外的感知艺术,帮助用户发现手机相机在色彩还原、动态范围和夜景模式等方面的真实表现。特别关注主观体验与客观参数的差异,提供实用的评测技巧和报告撰写心法。

weixin_30940783的博客 308

简单手写一个线性回归模型

手写一个简单的线性回归模型,简单了解线性回归模型的核心思想

shiliuyeshuang的博客 270

《计算机科学概论(第13版)》5-12章

定序是按给定语句的顺序应用每个算法步骤。(primitive):建立一组定义明确的构建块,利用它们来构造和执行算法的表示。可以消除歧义,不会引起误解,就像咱们传统的自然语言(用英语来沟通交流)。(programming language):原语的集合以及说明如何组合这些原语来表示比较复杂的想法的规则集合。用程序设计语言描述的算法可以在计算机上执行。每个原语都有自己的语法和语义,语法指的是原语的符号表示,语义是指该原语的含义。伪代码:用户开发过程中非正式表达想法的符号系统。

输入知识,消化知识,输出知识,分享知识,教人让我学习更好,业精于勤荒于嬉,行成于思毁于随 1036

深入解析CRC16查表法:从原理到Modbus协议实践

本文深入解析了CRC16查表法的核心原理与实现,重点阐述了其“空间换时间”的优化思想。通过对比直接计算法,详细说明了查表法如何通过预计算表格将计算速度提升数十倍,并提供了完整的Modbus CRC16查表法代码生成、解析及实战避坑指南,帮助开发者在嵌入式及工业通信场景中高效实现可靠的数据校验。

weixin_29166013的博客 555

手写线性回归模型 + 相关实验(训练方法对比、确定学习率/正则项、特征缩放、学习曲线)

自己写的线性回归模型,用了正规方程、梯度下降、正则化。参照吴恩达老师的机器学习课程做了一些简单的实验,包括对比不同的训练方法、对比特征缩放效果、确定学习率、确定正则项系数、绘制学习曲线。

m0_49785894的博客 2310

如何用Python打造PubMed API客户端:科研文献检索自动化实践

PubMed提供了官方的Entrez E-utilities API接口,支持程序化检索文献,但直接调用API需处理请求重试、参数封装、数据解析等问题。批量获取文献ID及结构化详情(标题、作者、DOI等)内置重试机制,应对网络波动或API限流统一数据输出格式,便于后续分析(如文献计量、AI文本处理)灵活适配不同检索需求(如指定数据库、结果数量)本文实现的PubMed API客户端,通过封装API请求、重试机制、数据解析,让科研文献检索从“手动点击”变为“代码自动化”。

ASKCOS博客 358

Python手写机器学习的“线性回归”算法

我们只考虑如何手写实现,不考虑效果好不好,和统计学上的使用方法,主要是培养代码算法实现思想,如果您想学习线性回归知识,请看我博客的专门有写文章。

Eric005的博客 1184

Vins-Fusion 外参camera-imu 标定

Vins-Fusion是一种基于优化的多传感器状态估计器,一大特色是支持实时camera-imu外参校准(相机和IMU之间的旋转)。Vins-Fusion 外参camera-imu校准是利用两帧间计算相机位姿和imu预积分得到位姿,构建最小二乘问题,并通过SVD求解camera-imu外参旋转矩阵。

u010196944的博客 2490

英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置

本文给出了GTM与EVADC之间关联的细节,并通过两个实例分别说明了如何对寄存器进行配置。

无所适从的我的博客 2932

Python手写线性回归算法

作者 |苏南下来源 |机器会学习ML(ID:AI_Learning007)摘要:通俗易懂介绍线性回归算法,并 Python 手写实现。之前我们介绍了:kNN 算法,主...

Python大本营的博客 1365

AI 实战篇 |基于 AI开放平台实现 人脸识别对比 功能,超详细教程【附带源码】

本篇文章来学习一下怎样使用 Unity实现简单地人脸识别 功能。 关于人脸识别,我们可以选择很多平台的SDK接入Unity来实现人脸识别的功能。

努力前行,总会成为自己心中的那道光 5万+

Java手写线性回归算法

数据预处理是线性回归算法中非常重要的一步,它包括数据清洗、特征选择和数据归一化等操作。线性回归是一种用于建立自变量和因变量之间线性关系的机器学习算法。它通过最小化预测值与真实值之间的差异来找到最佳的模型参数。以下是线性回归的步骤总结:加载数据:将数据加载到程序中,包括自变量和因变量。特征缩放:对自变量进行特征缩放,以确保所有特征值在相似的范围内。常用的方法是将特征值进行归一化,使其在0到1之间。初始化参数:初始化模型的参数,这些参数将用于计算预测值。训练模型:使用梯度下降算法来训练模型。

qq_22593423的博客 614

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python 手写线性回归算法竟如此简单

【从零开始学机器学习第 11 篇】摘要:通俗易懂介绍线性回归算法,并 Python 手写实现。之前我们介绍了:kNN 算法,主要用于解决分类问题,也可以解决回归问题,它有...

苏克的博客 2163

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

3 线性回归【手写+Xmind笔记】

文章目录3 线性回归【手写+Xmind笔记】3.1 Xmind笔记3.2 手写证明 3 线性回归【手写+Xmind笔记】 3.1 Xmind笔记 3.2 手写证明

hanhan的博客 229

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

线性回归原理手写笔记

线性回归原理的手写笔记。

weixin_46698687的博客 224

python机器学习手写算法系列——线性回归

python机器学习手写算法系列——线性回归 转载于:https://www.cnblogs.com/liuys635/p/10948048.html

weixin_34186931的博客 247

手写计算线性回归模型的偏导数怎么来的。

DAY1

醉卧考场君莫笑 456

Pytorch手写线性回归

pytorch手写线性回归 import torch import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation LEARN_RATE = 0.1 #1.准备数据 x = torch.randn([500,1]) y_true = x*0.8+3 #2.计算...

高颜值的杀生丸(此博客转载自我的博客园) 131
上一篇: 线性回归原理及应用
下一篇: 其他线性回归,岭回归等
Wind_know
博客等级 码龄9年 17粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值