实验一:用python实现感知机并对鸢尾花数据集分类

本文介绍了使用Python实现感知机算法对鸢尾花数据集进行分类的实验过程。首先,概述了实验内容,包括训练感知机模型、测试预测结果以及算法原理。接着,详细解释了感知机的数学抽象,包括输入、输出、训练内容和训练策略。在实验过程中,采用随机梯度下降法训练权重和偏置,并通过可视化分析了分类效果。最后,总结了实验中遇到的问题及解决方案。
摘要由CSDN通过智能技术生成

实验一:用python实现感知机并对鸢尾花数据集分类

1. 实验内容:

(1) 用你熟知的语言(尽量使用python)实现感知器的算法,并在给定的数据集上训练。

(2) 在测试集上用训练好的感知器模型进行测试,并将预测结果以csv格式保存为一行预测的分类。

(3) 简要说明算法原理,记录实验过程的关键步骤,以及实验过程中遇到的问题和解决方法。

(4) 尝试与上次实验进行数据互换对比两种算法。

2. 实验说明:

数据集为鸢尾花数据集,有三个类别,其中setosa与另外两种之间是线性可分的,因此你需要选择按照setosa和versicolor,或setsosa和virginica,进行训练分类。

实验过程中不可以直接调用第三方库封装好的训练函数,但可以使用基础类和函数,例如numpy的数组以及矩阵内积dot函数等(算法迭代过程必须自己完成)。

算法具体实现方式无要求,函数或是类封装均可,但是要写进实验报告内。不必粘贴代码,但要有实验过程关键步骤的截图。

可以尝试利用可视化分析实验过程(非必须)。

3. 报告要求:

实验必须独立完成不得抄袭借鉴他人的实验内容。

4. 原理说明:

简要说明感知器算法原理,可以借助伪代码来进行说明。

4.1 文字描述:

感知机是一个二分类的线性模型,它的目的是寻找一个能将训练集正实例点和负实例点完全正确分开的超平面,即将输入数据线性分为两类(用1和-1标识)。

感知机的输入是实例的特征向量,输出是实例的类别,分别是+1和-1。即输入实例各属性值组成的向量,根据这些属性值进行分类,并做好标签输出。

当我们掌握了输入、输出以及最终目的时,可以发现最重要的部分是分类使用的方法——对一个实例的每个属性进行加权,并求和修正,判断正负,实现正实例点和负实例点的区分。

4.2 数学抽象:
4.2.1 输入部分:
  • 输入空间(特征空间) X ⊆ R D X \subseteq \mathbb R^D XRD
  • x ∈ X x \in X xX 表示样本的特征向量,对应输入空间(特征空间)中的点。
4.2.2 输出部分:
  • 输出空间(类别空间)是 Y = { + 1 , − 1 } Y = \{+1,-1\} Y={ +1,1} ,输出 Y Y Y 表示样本的类别。
4.2.3 训练内容:
  • 给定训练集 D = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , … … , ( x ( N ) , y ( N ) ) } D = \{(\mathbf x^{(1)},y^{(1)}),(\mathbf x^{(2)},y^{(2)}),……,(\mathbf x^{(N)},y^{(N)})\} D={ (x(1),y(1)),(x(2),y(2)),,(x(N),y(N))} ,其中 x ( n ) ∈ X \mathbf x^{(n)} \in X x(n)X y ( n ) ∈ Y \mathbf y^{(n)} \in Y y(n)Y n = 1 , 2 , 3 , … … , N n = 1,2,3,……,N n=1,2,3,,N

  • 构建线性分类器,即学习一个由属性的线性组合构成的函数。对于一个给定的 D D D维样本 x = [ x 1 , … … , x D ] T \mathbf x = [x_1,……,x_D]^T x=[x1,xD]T ,其线性组合为
    f ( x ) = w 1 x 1 + w 2 x 2 + … … + w D x D + b f(\mathbf x) = w_1x_1+w_2x_2+……+w_Dx_D+b f(x)=w1x1+w2x2++wDxD+b

    f ( x ) = w T x + b f(\mathbf x) =\mathbf {w^T x}+b f(x)=wTx+b
    其中 w \mathbf w w D D D维的权重向量, b b b为偏置。

  • 构建映射关系,即输入空间到输出空间的映射函数为:
    s i g n ( f ( x ) ) = s i g n ( w T x + b ) = { + 1 , f(x)  ≥  0 − 1 , f(x)  <  0 sign(f(\mathbf x)) = sign(\mathbf {w^T x}+b) = \begin{cases} +1, & \text{f(x) $\ge$ 0} \\ -1, & \text{f(x) $\lt$ 0} \end{cases} sign(f(x))=sign(w

  • 13
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值