【李航-统计机器学习】【原理及代码】【第二章】 感知机模型 python C++

机器学习期末复习【看这篇就够了,直接救命】 在机器学习中,归纳偏好是指学习算法在学习过程中倾向于选择某些假设(或模型)而不是其他假设的一种倾向性。举例来说,假设有一个监督学习任务需要学习将图像分类为狗或猫。如果我们使用支持向量机作为学习算法,那么它的归纳偏好就是偏向于选择最大化边际甚至通过核技巧将其转换为更复杂的超平面来划分。反之,如果我们使用朴素贝叶斯作为学习算法,则它的归纳偏好是基于对数据满足条件独立性的假设,在学习中进行概率推断以得到最优结果。过拟合:指模型在训练数据上表现极好,但在测试数据或者新数据上表现很差。 阅读详情

一、原理:

      感知机的“非对偶”还是比较容易理解的,输出的Y只有 +1 和 -1 两个选择。

       公式:,其中w是权重,b是偏置

       其中sign算是个激活函数:

                        

      线性方程:   这个对应空间中的一个超平面

                                              

     需要知道的几个小内容:

      1、点到超平面的距离:

          ,,这样一来相当于是x向量在w方向上投影之后+b = 距离

       2、误分类数据,具有如下关系成立:

                              

       3、误分类点到超平面的总距离:

                                

       4、损失函数:

                               

                                      

       5、参数更新:

                                          

二、课本上2.1 的习题

         

import numpy as np
import random
#定义数据
#define data
#positive point
x1=[3,3]
x2=[4,3]
#negtive point
x3=[1,1]
#定义模型,定义负样本的随机选择(遵从随机梯度下降)
#define model
#f(x)=sign(wx+b)

def sign(y_):
    if y_>= 0:
        return 1
    if y_<0:
        return -1
class perceptron_model:
    def __init__(self,w,b,lr):
        #初始化 Initialization
        self.w=w
        self.b=b
        self.lr=lr
    def forward(self,x):
        return self.w[0]*x[0]+self.w[1]*x[1]+self.b
    def backward(self,x,y):
        self.w[0]=self.w[0]+self.lr*y*x[0]
        self.w[1]=self.w[1]+self.lr*y*x[1]
        self.b=self.b+self.lr*y
    def loss(self,preds,labels):
        loss_=0
        for pred,label in zip(preds,labels):
            if -label *  pred >= 0:
                #loss_+= -label*pred   #正统loss
                loss_+=1              #非正统
        return loss_
        
def get_preds(model,data):
    preds=[]
    for x0,x1 in data:
        preds.append(model.forward([x0,x1]))
    return preds
def stochastic_select_negtive_data(data,preds,labels):
    new_data=[]
    for point,pred,label in zip(data,preds,labels):
        if -label*pred >=0:
            new_data.append([point,label])
    selected_data=random.sample(new_data,1)
    return selected_data
#学习,训练模型
meta=[x1,x2,x3]
labels=[1,1,-1]
model=perceptron_model(w=[0,0],b=0,lr=1)
preds=get_preds(model,meta)
print(preds)
loss_=model.loss(preds,labels)
while loss_>0:
    selected_data=stochastic_select_negtive_data(meta,preds,labels)
    print(selected_data)
    model.backward(selected_data[0][0],selected_data[0][1])
    preds=get_preds(model,meta)
    loss_=model.loss(preds,labels)


#第一次预测结果
[0,0,0]
#打印出每次选择的负样本
[[[3, 3], 1]]
[[[1, 1], -1]]
[[[1, 1], -1]]
[[[1, 1], -1]]
[[[3, 3], 1]]
[[[1, 1], -1]]
[[[1, 1], -1]]
#查看模型参数与预测结果
print(model.w,model.b)
print(get_preds(model,meta))

([1, 1], -3)
[3, 4, -1]

结果与课本上一致:

后期更新C++代码。。。

感知机学习 基本概念:感知机是二类分类的线性分类模型,对应于特征空间中将实例划分为正负两类的分离超平面,属判别模型。感知机学习旨在求出将训练数据进行线性划分的分离超平面。   感知机的定义: 从输入空间Rn到输出空间{+1,-1}的函数映射:f(x)= sign(w*x+b) 模型参数:w----权值向量   b----偏置 wx+b = 0 -----分离超平面方程   数据集{(xi,yi) 阅读详情

相关推荐

李航机器学习 | (3) 统计学习方法(第2版)笔记 --- 感知机习题与编程作业

1. Minsky与Papert指出:感知机是线性模型,所以不能表示复杂的函数,如异或(XOR).验证感知机为什么不能表示异或。 首先写出异或函数对应的输入输出: y 1 1 -1 1 -1 +1 -1 1 +1 -1 -1 -1 我们可以可视化上述实例及其标签: import numpy as np...

sdu_hao的博客 2430

机器学习:李航-统计学习方法-代码实现

《统计学习方法》这本书,附件里并没有代码实现,于是许多研究者复现了里面算法的代码,并放在github里分享,这里介绍几个比较热门的《统计学习方法》代码实现的项目

lingxw的博客 2726

李航《统计学习方法》的代码实现

李航老师的《统计学习方法》的代码实现,李航老师的《统计学习方法》的代码实现。

李航《统计学习方法》例2.1 感知机学习算法的原始形式——实现代码

# 2020.01.11 By yangbocsu 例2.1如图2.2所示的训练数据集,其正实例点是1= (3,3)T, 2= (4,3)T,负实例点是:3=(1,1)",试用感知机学习算法的原始形式求感知机模型f(x)=sign(wx+b)。这里,w= (w(1), w(2))T", x= (x(1), x(2))T。 参考代码: # 2020.01.11 By yangbocsu import numpy as np import matplotlib.pyplot a...

少年一贯快马扬帆,道阻且长不转弯; 要盛大,要绚烂,要哗然; 要用理想的泰坦尼克,去撞现实的冰川; 要当烧赤壁的风,而非借鉴草船; 要为了一片海,就肯翻万山。 3786

从光斑图到锤形优化:一次搞定Zemax双胶合透镜的像散与场曲问题

本文详细解析了Zemax双胶合透镜设计中像散与场曲问题的诊断与优化方法。从光斑图分析到锤形优化技巧,提供了完整的光学设计实战指南,帮助设计师快速定位问题并有效改善系统性能,特别适合光学设计工程师和Zemax使用者参考。

weixin_27134495的博客 231

Palantir解密:“本体”的建模逻辑及其扩展方向

上一篇重点从对现实世界建模的角度探讨了“本体”在数字化架构中的核心意义。这里借Palantir的“本体”概念、解析Palantir只是起点,目标旨在以他山之石攻玉——探索数字世界的底层架构逻辑,最终为构建自主体系提供思考。Palantir以“本体论”为核心的建模方案是否代表终极答案,不宜过早下结论,但其思路值得深入剖析。

SZSDQJC的博客 2632

感知机(python实现)

     感知机(perceptron)是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1)。感知机对应于输入空间中将实例划分为两类的分离超平面。感知机旨在求出该超平面,为求得超平面导入了基于误分类的损失函数,利用梯度下降法 对损失函数进行最优化(最优化)。感知机的学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。感知机预测是用学习得到的感知机模型对新的实例进行预...

weixin_34416649的博客 360

Windows 11 IoT企业版LTSC 24H2/25H2中文版安装指南(含OEM激活教程)

本文详细介绍了Windows 11 IoT企业版LTSC 24H2/25H2中文版的安装与OEM激活全流程。从系统镜像准备、硬件兼容性检查到自动化安装配置,再到OEM激活方案(包括SLIC注入和数字许可证激活),为工业自动化、数字标牌等物联网设备提供稳定可靠的系统部署指南。

weixin_29198045的博客 8800

感知机原理以及代码

感知器

Alter__的博客 525

Win64 驱动内核编程-16.WFP网络监控驱动(防火墙)

WFP驱动监控网络 WFP是微软推出来替代TDIHOOK、NDISHOOK等拦截网络通信的方案,WFP的框架非常庞大,在RING3和RING0各有一套类似的函数,令人兴奋的是,即使在R3使用WFP,也可以做到全局拦截访问网络。由于WFP的范围太广,实在难以一言概括,感...

墨鱼菜鸡 1033

Qt Creator配置MSVC编译环境、调试环境

获取和安装:cdb.exe 在 Debugging tools for Windows 中,而现在已经不单独提供下载,只在Windows SDK 或者Windows Driver Kit里面包含 所以需要下载微软的调试工具,最少需要下载 Windows SDK。在windows上开发,一般使用Qt Creator自带mingw编译器,编译和调试都很方便,安装Qt时勾选后,自动配置完毕。但是有时候我们需要使用MSVC的编译器,这个时候我们没法直接使用,需要配置环境才能使用,以下是配置方案。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 6986

统计学习方法——实践

看书结合python实现的博客学习: 李航《统计学习方法》第二章——用Python实现感知器模型(MNIST数据集) 李航《统计学习方法》第三章——用Python实现KNN算法(MNIST数据集) 李航《统计学习方法》第四章——用Python实现朴素贝叶斯分类器(MNIST数据集) 李航《统计学习方法》第五章——用Python实现决策树(MNIST数据集) ...

qq_26915707的博客 333

汽车电子 静态电流

**静态电流(Static Current 或 Quiescent Current, IQ)** 是指汽车在 **熄火 / 关机 / 睡眠模式** 下,电子控制单元(ECU)或电子元件仍然保持基本功能(RTC、存储保持、Wake-up 监测、CAN/LIN 监听等)所消耗的微弱电流。

天赐好车的博客 754

清华AI 2025培养计划全解析:数学、机器学习与大模型学习路线

人工智能学科涉及数学、计算机与机器学习等多个领域,系统性学习路线是关键。其核心原理在于先夯实数学分析、线性代数等基础,再掌握数据结构与算法,进而理解深度学习与大模型技术。这种培养方式能够帮助学习者建立从理论到工程实践的完整能力,广泛应用于高校教学、自学规划及职业转型。面对大模型时代的到来,参考清华大学2025年人工智能培养计划,可以清晰地看到从数学到机器学习的进阶路径,为学习者提供切实可行的参考框架。

weixin_33895695的博客 401

第81篇:Vibe Coding时代:LangGraph + Eval评估体系实战,解决 Agent 优化全靠感觉的问题

本文介绍了一个为LangGraph Coding Agent设计的评估体系解决方案。文章首先指出了当前AI Coding Agent开发中的常见问题:优化过程缺乏客观评估标准,导致改进效果难以量化。随后提出了一个完整的评估框架,包括评估指标(任务成功率、质量指标、安全指标、成本指标和流程指标)、项目结构设计和评估案例集。 核心内容包括: 设计了JSON格式的评估案例集,覆盖正常任务、边界任务和高风险场景 实现了模拟Agent输出的演示代码 构建了多维度评分系统,包括关键词匹配、禁用词检测和成本评估 提供了评

sundong_81的博客 47

【网络与爬虫 62】小程序爬虫终极攻略:微信支付宝小程序数据采集完全指南

本文深入解析微信和支付宝小程序的爬虫技术,从基础架构分析到高级逆向工程,涵盖WXML/AXML模板解析、API接口拦截、网络流量分析等核心技术。通过实战案例和代码示例,帮助开发者掌握小程序数据采集的完整技术栈。

熵数实验室 3415

网易2018校招机器学习算法工程师笔试题解析与备考指南

机器学习算法岗的校招笔试,向来不仅考察理论记忆,更看重候选人对模型原理、算法实现与工程场景的综合理解。以经典大厂真题为例,从逻辑回归的梯度推导到SVM的核函数选择,从特征工程的设计思路到模型评估指标的陷阱,都是高频命题方向。知识体系中,KMP算法的next数组推导、动态规划状态定义、贪心策略的证明等数据结构与算法基础同样占据重要分值。理解损失函数背后的概率解释,掌握过拟合的识别与应对,是答好主观题的关键。备考时应以基础理论为根基,结合真题实战,通过错题复盘构建知识图谱,并关注离线评估与在线指标不一致等工业界

weixin_33834910的博客 493

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

机器学习算法岗面经:腾讯阿里网易面试真题复盘

机器学习是人工智能领域的技术核心,算法工程师岗位面试往往围绕模型原理、工程实现与业务场景展开。理解逻辑回归、SVM、XGBoost等经典模型的损失函数与推导过程,掌握AUC、GAUC等评估指标的应用边界,是应对技术深挖的基础。在实际业务中,推荐系统的冷启动、特征交叉和AB Test决策都需要扎实的算法功底与系统思维。本文基于作者亲身经历,系统复盘腾讯、阿里、网易的算法面试全流程,从简历准备、项目讲述到手撕代码技巧,涵盖高频考点与常见误区,为准备机器学习算法岗的求职者提供实践参考。

weixin_34124651的博客 352

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深信服算法岗笔试复盘:从贪心到KMP,四道编程题全解析

算法笔试是技术岗位招聘的重要筛选环节,其核心在于考察候选人的建模能力与代码实现功底。在数据结构与算法体系中,排序算法、快速幂、KMP算法等经典内容常作为基础考点,引导求职者建立复杂度分析与边界处理意识。与此同时,动态规划、贪心与多源BFS等算法则能有效评估解决实际工程问题的能力,比如资源调度、路径优化和异常扩散模拟。这些基础算法在网络安全与云计算领域有着广泛应用,例如恶意流量检测、智能选路与威胁传播分析。本文以某企业安全算法岗的笔试为样本,复盘真题题型与解题思路,帮助读者理解算法知识如何与安全业务结合,并为

weixin_30613727的博客 460

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

统计学习方法代码实现练习:第二章感知机

尝试实现算法代码 chapter2 感知机 #第二章:实现感知器的原始形式 import numpy as np XX=np.array([[3,3],[4,3],[1,1]]) YY=np.array((1,1,-1)) eta=1 w=np.array([0,0]) b=0 i=0 while i<3: check = YY[i]*(np.dot(w, np.transpose(XX[i]))+b) if check<=0: w = w + eta*n

weixin_44373586的博客 635

AI-统计学习(3)-分类-感知机-python 实例代码

感知机模型一般用来做二分类,找分类超平面的。概念请参看前篇。本篇是python的具体实现。 示例输入: X_train=np.array([[3,3],[4,3],[1,1]]) y_train=np.array([1,1,-1])//标签 求超平面 示例输出: 左边是b...

aggie4628的专栏 306

《机器学习方法(第三版)—— 李航》学习笔记(一)附代码

《机器学习方法(第三版)》李航,学习笔记(一)。

HitStuHan的博客 1万+

已知一个如图所示的训练数据集,其正例点是x1=(3,3),x1=(4,3),负例点是x3=(1,1),试求最大间隔分离超平面。

已知一个如图所示的训练数据集,其正例点是x1=(3,3),x1=(4,3),负例点是x3=(1,1),试求最大间隔分离超平面。 从图中可以看出,x2不起作用,所以不用理会 方法1: 方法2:考虑求解中垂线方程即可 斜率:-k=-1,中点(2,2), 所以相当于求经过(2,2),斜率为-1的直线方程 ...

江南小帅瓜的博客 2万+

统计方法(李航)|机器学习算法|k近邻|核心理论+代码实现

小白零基础学习机器学习算法,理论用的李航老师的《统计方法》,代码实现是学习的刘建平老师的博客和仓库,希望能对大家有所帮助,一起进步!

zzztutu的博客 808

统计学习方法笔记(七)-线性支持向量机原理及python实现

线性支持向量机线性支持向量机定义 线性支持向量机线性支持向量机学习算法代码案例 TensorFlow案例地址 线性支持向量机 实际场景中训练数据往往不是线性可分的,当训练数据近似线性可分时,就需要使用线性支持向量机或软间隔支持向量机。 给定训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x...

脑机接口社区 1403

深度学习必读:李航《机器学习方法》PDF版本,字节AI实验室总监强烈推荐

机器学习方法》这本书由李航博士撰写,他是字节跳动AI实验室的总监。这本书以其全面和系统的内容,成为了机器学习领域的经典之作。虽然它不是为初学者设计的,但对于任何希望在人工智能领域发展或进行科研工作的人来说,都是一本必读的书籍。书中内容精炼,不拖泥带水,从基础原理出发,为读者提供了清晰的理解。它非常适合作为一本参考书籍。这本书内容丰富,共有29章,分为三个主要部分。

m0_65555479的博客 3300
上一篇: MAC OSX 的pycharm 突然双击打不开,重新安装也没用
下一篇: 【李航-统计机器学习】【原理与代码】【第三章】K近邻法 python C++
Jie Ou
博客等级 码龄10年 176粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值