首页 > 编程语言 >感知机学习算法的原始形式 | 机器学习随笔

感知机学习算法的原始形式 | 机器学习随笔

时间:2022-10-30 21:26:53浏览次数:50  
标签:2.0 1.0 迭代 次数 学习 感知机 3.0 x3 随笔

根据《统计学习方法 第二版》中2.3.1部分,使用python编写了感知机学习算法的原始形式,具体代码如下:

import numpy as np

def perceptron_raw():
    data = np.array(
        [
            [3, 3, 1],
            [4, 3, 1],
            [1, 1, -1],
        ]
    )
    X_name = ['x'+str(x+1) for x in range(len(data))]
    X = data[:, :-1]
    Y = data[:, -1]
    
    w = np.matrix([0, 0])
    b = 0
    rate = 1.

    cons = [False]
    i = 0
    while not all(cons):
        cons = []
        for x_name, x, y in zip(X_name, X, Y):
            con = y*(w @ np.matrix(x).T+b)
            if con[0,0] <= 0:
                cons.append(False)
                w = w + rate*y*x
                b = b + rate*y
                i += 1
                print('迭代次数:{}, 误分类点:{}, w:{}, b:{}'.format(i, x_name, w.tolist()[0], b))
                break
            else:
                cons.append(True)
    print('迭代次数:{}, 误分类点:{}, w:{}, b:{}'.format(i+1, 0, w.tolist()[0], b))


if __name__ == '__main__':
    perceptron_raw()

    print('end the program.')

运行结果一致,最终输出如下:

迭代次数:1, 误分类点:x1, w:[3.0, 3.0], b:1.0
迭代次数:2, 误分类点:x3, w:[2.0, 2.0], b:0.0
迭代次数:3, 误分类点:x3, w:[1.0, 1.0], b:-1.0
迭代次数:4, 误分类点:x3, w:[0.0, 0.0], b:-2.0
迭代次数:5, 误分类点:x1, w:[3.0, 3.0], b:-1.0
迭代次数:6, 误分类点:x3, w:[2.0, 2.0], b:-2.0
迭代次数:7, 误分类点:x3, w:[1.0, 1.0], b:-3.0
迭代次数:8, 误分类点:0, w:[1.0, 1.0], b:-3.0
end the program.

标签:2.0,1.0,迭代,次数,学习,感知机,3.0,x3,随笔
From: https://www.cnblogs.com/li--si/p/16842258.html

相关文章

  • 学习Python第一天
    日后会做出更加详细的学习心德:做出笔记如下:#创建一个文件importkeywordname="james"#1,变量的组成部分变量名称变量值变量内存id(name)#变量的内存地址print(id(......
  • 2022-2023-1 20221320 《计算机基础与程序设计》第九周学习总结
    学期(2022-2023-1)学号(20221320)《计算机基础与程序设计》第九周学习总结作业信息各项要求具体内容<班级的链接>2022-2023-1-计算机基础与程序设计<作业要求......
  • 20201302姬正坤第六章学习笔记
    Linux第六章——信号和信号处理一、信号和中断人员中断进程中断硬件中断进程的陷阱错误二、Unix/Linux中的信号处理1、信号的来源来自硬件中断的信号来自异常......
  • 2022-2023-1 20221312 《计算机基础与程序设计》第九周学习总结
    班级链接:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)作业要求:2022-2023-1《计算机基础与程序设计》教学进程-娄......
  • 学习记录23java拼图小游戏
    拼图目标GUI(GraphicalUserInterface,图形用户接口)这是指采用图形化的方式显示操作界面,几乎所有的语言都有GUI的知识java中有两套完整的体系:AWT包(出现的比较早,可能......
  • 2022-2023-1 20221327《计算机基础与程序设计》第九周学习总结
    作业信息这个作业属于那个班级 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK09作业目标 ......
  • cv学习总结(SVM,softmax)10.24-10.30
          本周完成了SVM课程笔记的阅读,包括SVM的基本原理以及SVM的优化过程,以及实现了SVM的两种损失函数(svm以及softmax)的线性分类器,以及学习了反向传播以及神经网......
  • 2022-2023-1 20221405 《计算机基础与程序设计》 第九周学习总结
    作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2022-2023-1计算机基础与程序设计第九周作业这个作业的目标操作系统责......
  • 【李宏毅机器学习】Domain Adaptation 域适应
    note:在工程很常见的现象,训练好的模型用在model未见过域的样本时,表现效果较差,解决domainshift可以使用迁移学习transferlearning,而domainadaptation是transferlearning的......
  • Kotlin DSL 学习
    之前在《EffectiveKotlin》一书中,有一条专门讲解DSL的:​​考虑为复杂的对象创建定义DSL​​,让我对DSL有了一定的了解。为了能够更熟悉掌握Kotlin上的DSL,用这篇Blog......