感知机学习规则与感知机训练实例

本文介绍了感知机的学习规则,这是一种监督式学习方法,当判断结果与答案不符时,通过修正系数进行机器学习。感知机通过系数和样本数据判断类别,例如在鸢尾花数据集中,根据花萼长度和花瓣宽度进行分类。在训练过程中,使用特定的更新公式对错误分类的数据进行系数修正。感知机仅能处理线性可分的数据。文中还给出了一个具体的感知机训练实例,展示了训练过程和结果分析。
摘要由CSDN通过智能技术生成

学习资源:https://www.bilibili.com/video/BV1NJ41177Ec?p=3

图片加载不出来看这:
Auspic

感知机学习规则:

对于感知机的学习规则总的来说可以用下面的这一张图来概括:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o5oODQ2q-1599794323207)(https://s1.ax1x.com/2020/09/11/wtSJCd.png)]

先简单的介绍一下感知机的学习规则,这是一个监督式的学习,就是在传入数据中给出答案,感知机自己判断数据,而在判断结果与答案

不同时,自动的通过修正系数的方式进行机器学习,w代表的是进行每次感知机训练传入数据的分别的系数,默认的这些系数是按照一个

数的附近进行正态分布的,而在下面的对传入数据的判断,比如在感知机的训练实例中的根据这些系数进行对数据的进行两种花种类的判

断,那么在我们的感知机的训练中如果判断结果与答案是有出入或者出错的,那么就会自动修改这些系数来进行机器学习。

那么我们是如何通过这些系数和传入的数据对花的种类进行判断的呢?

我们首先定义一个z = w0**1 + w1x1 + w2x2… 为两个向量相乘w[]点乘x[],w为系数,x为样本数据

比如就是说在训练的实例中我们就是通过传入花萼长度和花瓣宽度来得出z,z如果是大于0的那么取为1那么这个数据就是抽象化为1的花,z如果是小于0的那么取-1那么这个数据就是抽抽象化为-1的花。

即z = z>=0?1:-1

其实要注意到的是z的式子中w0*1其实是对z进行判断的时候用来分界的数字z = z<=w0?:1:-1,但是我们并不知道这个参数是什么,那么这时将这个参数放入z的式子中直接将z = z>=0?1:-1那么这时候我们就在感知机训练数据的时候同时对w0进行修正,w0的初始值按照正态分布取值。

那么如何对错误数据反馈给感知机,进而对这些系数进行修正?

我们的感知机对一段花进行分类错误的时候,对全部的系数进行修正的方式是遵循一个公式:

eta是我们创建对象的时候设置的学习速率,predict(xi)为根据数据对花进行分类,taeget为答案

即 w += yn(t)*xi

update = self.eta * (target - self.predict(xi))
self.w_[1:] += update * xi#update若不是零的话自然会更新w_数组

即对这两个向量wi与xi进行加法运算:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CKiIG2gK-1599794323214)(https://s1.ax1x.com/2020/09/11/wtF3Uf.png)]

但是我们可以看到,我们对这些点进行区分,我们在直观的在图上描绘可以看出,这些点都是线性可分的,也就是都是可以用一条直线进行区分的,这个感知机只是一个非常初级的感知机只能对线性可分的数据进行区分,还有更复杂的感知机学习规则需要去学习。

感知机训练实例:

感知机class:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

class Perceptron(object):
    """Perceptron classifier.

    Parameters
    ------------
    eta : float
      Learning rate (between 0.0 and 1.0)
    n_iter : int
      Passes over the training dataset.
    random_state : int
      Random number generator seed for random weight
      initialization.

    Attributes
    -----------
    w_ : 1d-array
      Weights after fitting.
    errors_ : list
      Number of misclassifications (updates) in each epoch.

    """
    #默认学习速度为0.1,训练次数为50次
    def __init__
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值