自己设计一个感知机实现二分类算法

本文介绍了一个基于感知器算法的简单神经网络实现过程,包括神经网络的基本组件介绍、Python类的设计与实现、权重更新机制及可视化展示。通过实际案例演示了如何使用感知器解决线性可分的二分类问题。

实现一个简单的神经网络,做一个简单的二分类算法。为了理解神经网络,我们应该先理解神经网络的组成单元——神经元。神经元也叫做感知器。感知器算法在上个世纪50-70年代很流行,也成功解决了很多问题。并且,感知器算法也是非常简单的。在人工神经网络领域中,感知器也被指为单层的人工神经网络,以区别于较复杂的多层感知器(Multilayer Perceptron)。 作为一种线性分类器,(单层)感知器可说是最简单的前向人工神经网络形式。尽管结构简单,感知器能够学习并解决相当复杂的问题。感知器主要的本质缺陷是它不能处理线性不可分问题。
感知器有如下组成部分:
输入权值 激活函数 输出
以下程序切实实现权值更新,根据误差结果更新迭代,并且观察每次迭代后误差变化,网络趋于收敛。并且对测试集结果进行二分类,并且用可视化图片展示。
其中,在处理过程中,对python类概念、以及多个第三方库有一定了解,比如numpy、matplotlib等。
1.创建一个类作为分类器,可处理更新权重信息、记录误差信息

class AdalineG(object):    
    """    
    eta:float    
    学习效率,处于0和1之间        
    n_iter:int    对训练数据进行学习改进次数        
    w_:一维向量    
    存储权重数值        
    error_:    存储每次迭代改进时,网络对数据进行错误判断的次数    
    """            
    def __init__(self,eta=0.01,n_iter=50):        
        self.eta = eta        
        self.n_iter = n_iter            
    def net_input(self, X):        
        return np.dot(X, self.w_[1:]) + self.w_[0]        
    def activation(self, X):        
        r
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值