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
0
投稿
猜你喜欢
- 1 词频统计1.1 简单词频统计1.导入jieba库并定义文本import jiebatext = "Python是一种高级编程语
- 用户管理是绝大部分Web网站都需要解决的问题。用户管理涉及到用户注册和登录。用户注册相对简单,我们可以先通过API把用户注册这个功能实现了:
- 很多人喜欢把一个网站中相同的部分象是统一的页面logo,版权声明等做成一个过程,然后放到一个include文件中,这样所有的页面就都可以使用
- python菜鸟,每天都要进步一点点。二维元组的例子:A = ((1, 1, 1), (1, 1, 1),(1, 1, 1),(0, 0,
- 本文实例讲述了PHP实现上传文件并存进数据库的方法。分享给大家供大家参考。具体如下:show_add.php文件如下:<?php &n
- 小贤是一条可爱的小狗(Dog), 它的叫声很好听(wow), 每次看到主人的时候就会乖乖叫一声(yelp).从这段描述可以得到以下对象:fu
- 在默认情况下,MySQL搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE
- 在python中我们可以使用requests模块来实现调用远程接口一:安装requests模块pip install requests二:使
- 如果有空格就用%20代替,如果有其它字符就用%ASCII代替,如果有汉字等四个字节的字符,就用两个%ASCII来代替。不过有时候我们也需要将
- hello,我是小小炽,这是我写的第一篇博客,写博客一直都想在写,但是苦于能力尚浅,在各位大牛面前那既然是关公面前耍大刀了,但是其实想来每一
- Rel-License 是微格式的开发标准之一,简单的说就是通过给引用标签(通常是链接)加上REL属性,来标明所引用链接/数据与文章的关系。
- 分享一下 在3est活动中学习的godlong的 代码如下:<% Set xPost = createObject("Mi
- 我们将会看到一些在Python中使用线程的实例和如何避免线程之间的竞争。你应当将下边的例子运行多次,以便可以注意到线程是不可预测的和线程每次
- 于是写测试程序。。。不行 下载最新的ODBC。。。还是不行 通过sql plus查询。。。咦?竟然也查不到。。。 于是,折腾。。。折腾。。。
- asp之家注:有时候我们需要知道我们链接的远程图片是否正常,是否存在,当不存在时如果我们继续引用,就会在网页上留个大大的X,影响了页面美观。
- 首先在我们进行信息系统的开发的时候,数据库的应用必不可少,对于一个企业级别的数据库应用很少是只使用一块磁盘的,很多都是使用RAID磁盘阵列,
- 控制的前提是已经运行Microsip.exe 首先选择文件,选择txt格式文件,一行一个手机号格式;如下点击拨打下一个
- 1、执行环境说明python版本3.7直接使用pip进行安装pywin32、pyinstallerpip install pywin32pi
- 我们经常会遇到多重查询问题,而长长的SQL语句往往让人丈二和尚摸不着头脑。特别是客户端部分填入查询条件时,如用普通方法将更是难上加难。以下巧
- 问题描述:最近用jstree遇到一个问题,父节点选中时,被禁用的子节点也会选中如下解决方案:1、 将jstree升级到最新的版本,v3.3.