python离散建模之感知器学习算法
作者:努力奋斗的K崽 发布时间:2022-06-10 04:49:47
标签:python,离散,建模,感知器,学习算法
我们将研究一种判别式分类方法,其中直接学习评估 g(x)所需的 w 参数。我们将使用感知器学习算法。
感知器学习算法很容易实现,但为了节省时间,我在下面为您提供了一个实现。该函数有几个输入:训练数据、训练标签、对权重的初始猜测和学习率。注意,对于这两个类,类标签的值必须为+1和-1。
它将返回一个元组,其中包含:
1.学习w参数
2.执行的迭代次数
3.错误分类的样本数
花些时间检查代码。如果不清楚每一行是如何工作的,不要担心,只要让你自己知道每一行的目的是什么就可以了。代码中有一些注释可以帮助大家。
def perce(X, y, w_init, rho, max_iter=1000):
(N, nfeatures) = X.shape
# Augment the feature vectors by adding a 1 to each one. (see lecture notes)
X = np.hstack((X, np.ones((N, 1))))
nfeatures += 1
w = w_init # initialise weights
iter = 0
mis_class = N # start by assuming all samples are misclassified
while mis_class > 0 and iter < max_iter:
iter += 1
mis_class = 0
gradient = np.zeros(nfeatures) # initaliase the gradients to 0
# loop over every training sample.
for i in range(N):
# each misclassified point will cause the gradient to change
if np.inner(X[i, :], w) * y[i] <= 0:
mis_class += 1
gradient += -y[i] * X[i, :]
# update the weight vector ready for the next iteration
# Note, also that the learning rate decays over time (rho/iter)
w -= rho / iter * gradient
return w, iter, mis_class
解释:
X-数据矩阵。每行代表一个单独的样本
y-与X-标签行对应的整数类标签的一维数组必须为+1或-1
w_init-初始权重向量
rho-标量学习率
最大迭代次数-最大迭代次数(默认为1000)
def perce_fast(X, y, w_init, rho, max_iter=10000):
(N, nfeatures) = X.shape
X = np.hstack((X, np.ones((N, 1))))
nfeatures += 1
w = w_init
iter = 0
mis_class = N
yy = np.tile(y, (nfeatures, 1)).T
while mis_class > 0 and iter < max_iter:
iter += 1
# Compute set of misclassified points
mc = (np.dot(X, w.transpose()) * y) <= 0
mis_class = np.sum(mc)
# Update weights. Note, the learning rate decays over time (rho/iter)
w -= rho / iter * (np.sum(-yy[mc, :] * X[mc, :], axis=0))
return w, iter, np.sum(mc)
感知器算法的高效实现
对于笔记本电脑数据,此版本的工作速度将提高x100!
来源:https://blog.csdn.net/kirsten111111/article/details/121429528


猜你喜欢
- Python爬虫之Scrapy环境搭建如何搭建Scrapy环境首先要安装Python环境,Python环境搭建见:https://blog.
- 本文实例为大家分享了python点球小游戏的具体代码,供大家参考,具体内容如下1.游戏要求: 设置球的方向:左中右三个方向,射门或者扑救动作
- 一、理解装饰器所有东西都是对象(函数可以当做对象传递)由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。de
- 表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把
- 前言条件语句在实际开发中我们已经使用过几次了,在这里我们需要再次隆重的来介绍一下它,下面话不多说了,来一起看看详细的介绍吧。if语句顾名思义
- 一、闭包1. 什么是闭包?在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生 闭包。闭包可以用来在一个函
- 阅读系列教程上一篇:FrontPage2002简明教程二:文字与图像的处理通常网页的布局使用到的是FrontPage 2002中的表格和框架
- 定义和用法strftime() 函数根据区域设置格式化本地时间/日期。语法strftime(format,timestamp)参数 描述 f
- 本实例的实现逻辑是,应用selenium UI自动化登录百度盘,读取存储百度分享地址和提取码的txt文档,打开百度盘分享地址,填入提取码,然
- 一、Servlet实现文件上传,需要添加第三方提供的jar包下载地址:1) commons-fileupload-1.2.2-bin.zip
- 一、super( ) 的用途了解 super() 函数之前,我们首先要知道 super() 的用途是啥?主要用来在子类中调用父类的方法。多用
- 声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移。通过傅里叶变换,可以将时间域的声音函数分解
- 1、文件上传(input标签) (1)html代码(form表单用post方法提交)<input class="b
- <script language="javascript" src="js/sett
- question: Django中对数据库的调用非常的隐蔽,在各种复杂的模块互相拼接继承中很难发现获取数据库内容的部分来,开始试图理解一下下
- 直接使用word文档已经难不倒大家了,有没有想过用python构建一个word文档写点文章呢?当然这个文章的框架需要我们用代码一点点的建立,
- 为了在一幅图像 f 的(x,y)位置寻找边缘的强度和方向,所选择的工具就是梯度,梯度使用向量来表示:该向量指出了图像 f 在位置(x,y)处
- 本人刚开始学习python,看了一段时间视频教程之后,决定做一个小游戏来巩固一下知识点,就做了一个文字版飞行棋,暂不具备图形界面。把代码贴出
- 如下所示:import pandas as pd from pandas import * import numpy as np data
- 一般来说一个系统最先出现瓶颈的点很可能是数据库。比如我们的生产系统并发量很高在跑一段时间后,数据库中某些表的数据量会越来越大。海量的数据会严