python机器学习笔记(二):分类算法——感知机

本文介绍了Python中实现感知机算法的原理和步骤,包括感知器模型、学习规则以及如何使用鸢尾花数据集进行训练。通过zip函数处理数据,并可视化二维数据集的决策边界,展示感知机在分类问题上的应用。
摘要由CSDN通过智能技术生成
  • 分类机器学习算法:

    • 感知器perceptron
    • 自适应性神经元adaptive linear neuron

    内容:

    • 使用pandas、NumPy和matplotlib读取、处理和可视化数据
    • 使用python实现线性分类算法

感知器算法实现

  • 感知器模型
    在这里插入图片描述

  • 感知器学习规则
    在这里插入图片描述输入训练样本X和初始权重向量W,将其进行向量的点乘,然后将点乘求和的结果作用于激活函数sign(),得到预测输出O,根据预测输出值和目标值之间的差距error,来调整初始化权重向量W。如此反复,直到W调整到合适的结果为止。

  • 算法的原始形式
    在这里插入图片描述在这里插入图片描述

参考:https://blog.csdn.net/red_stone1/article/details/80491895

-算法:

#感知器算法
import numpy as np
class Perceptron(object):
    '''
    Perceptron classifier(感知器分类器)
    Parameters(参数)
    ---------------------
    eta:float 学习率
        Learning rate(between 0.0 and 1.0)
    n_iter:int 权重向量的训练次数
        Passes over training dataset 
    
    Attributes(属性)
    ---------------------
    w_: 1d_array 一维权重向量
        Weights after fitting
    errors_: list 记录神经元判断错误的次数
        Number of misclassifications in every epoch
     
    '''
    #初始化对象
    def __init__(self,eta=0.01,n_iter=10):  #eta:学习率;n_iter:在训练集上进行迭代的次数
        self.eta = eta
        self.n_iter = n_iter
    
    #训练模型
    def fit(self,X,y):
        '''
        fit training data.(拟合训练数据)
        
        Parameters(参数)
        -------------------
        X: {array-like},shape = [n_samples, n_features]
           Trainig vectors,where n_samples is the number of samples and n_features is the number of features
        y: arrat-like, shape = [n_samples]
           Target values
        X为n行m列的训练样本矩阵(n个样本,m个特征值);y为目标矩阵n行1列
        
        Returns
        ---------------
        self : object
        '''
        ##对于那些并非在初始化对象时创建但是又被对象中其他方法调用的属性,可以在后面添加一个下划线,例如self.w_
        self.w_ = np.zeros(1 + X.shape[1])   #self.w_为权值,初始化为0向量(一维矩阵) ;shape属性返回维数,shape[0]返回行数,shape[1]返回列数
        self.errors_ =[]                     #self.error_为误差
        for _ in range(self.n_iter):      #下划线表示临时变量, 仅用一次,后面无需再用到
            errors = 0
            for xi, target in zip(X,y):     #zip()函数见下解释;xi,target为一条样本的特征值(训练数)及目标值
                update = self.eta*(target - self.predict(xi))  #计算预测与实际值之间的误差在乘以学习率
                self.w_[1:] +=
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值