机器学习-感知机

一.感知机的概念

感知机可以说是最古老的分类方法之一了,在1957年就已经提出。他的思考方法就是在平面画出一条直线,或者在空间画出一个平面,或者可以推广到更高维的向量空间画一个超平面,将两种不同的东西分开。感知机模型虽然古老、简单、基础,但是原理很重要,下一步再学习支持向量机,学习神经网络,深度学习。

二.感知机模型

感知机是一个二分类的线性模型,这个模型的输入是向量,输出是1或0(也可以理解为True或False),每一个向量有多个维度,将每一个维度都数值化,用xi来表示向量的一个维度。
在这里插入图片描述

这个模型进行二分的逻辑是这样的
为每一个维度设置相应的权重概念,代表重要程度,用w表示。
设置一个门限值threshold,作为分界线。
求每一个向量的各维度的加权和w1 x1+w2 x2 +…+ wn xn
如果Σwi xi >= threshold,则输出1
如果Σwi xi < threshold,则输出0
则得到感知机函数
h = sign(Σwi xi - threshold)
用x代表向量,w代表权重组成的向量,w x代表两个向量的内积
感知机函数简写为
h = sign(wx+ b)

sign(x)是一个取符号的函数,x>=0时,函数值为1,反之为-1

### 感知机的概念 感知机是一种用于二元分类的线性分类算法,在机器学习领域具有重要意义[^3]。作为最简单形式的人工神经网络单元,感知机由输入层和输出层组成,其中不包含隐藏层。 #### 输入与输出关系 对于给定的数据样本 \( (x_1, x_2,..., x_n) \),通过加权求和并加上偏置项 b 后传入激活函数 f() 得到最终预测结果 y: \[y = f(\sum_{i=1}^{n}(w_i * x_i)+b)\] 这里 w 表示权重向量;f() 是阶跃函数,当净输入大于等于某个阈值时返回 1 ,反之则返回 -1 或者 0 。这种机制使得感知机能有效地处理线性可分问题[^4]。 ```python import numpy as np class Perceptron(object): def __init__(self, eta=0.01, n_iter=50, random_state=1): self.eta = eta self.n_iter = n_iter self.random_state = random_state def fit(self, X, y): rgen = np.random.RandomState(self.random_state) self.w_ = rgen.normal(loc=0.0, scale=0.01, size=1 + X.shape[1]) for _ in range(self.n_iter): errors = 0 for xi, target in zip(X, y): update = self.eta * (target - self.predict(xi)) self.w_[1:] += update * xi self.w_[0] += update errors += int(update != 0.0) return self def net_input(self, X): """Calculate net input""" return np.dot(X, self.w_[1:]) + self.w_[0] def predict(self, X): """Return class label after unit step""" return np.where(self.net_input(X) >= 0.0, 1, -1) ``` 此代码实现了单层感知器的学习过程,包括初始化权重、调整权重直至收敛等功能。 尽管如此,由于其局限性——仅能解决线性分离问题且无法提供最大间隔解法,因此在现代复杂场景下的应用受到一定限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值