感知机算法实战Iris数据集
关于感知机的相关理论知识请查看:感知机
关于Iris数据集
Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
Iris以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。
该数据集包含了5个属性:
& Sepal.Length(花萼长度),单位是cm;
& Sepal.Width(花萼宽度),单位是cm;
& Petal.Length(花瓣长度),单位是cm;
& Petal.Width(花瓣宽度),单位是cm;
& 种类:Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及Iris Virginica(维吉尼亚鸢尾)。
代码实战
先介绍一下如何搭建一个感知机,我们需要用到numpy库
import numpy as np
class Perception(object):
"""
eta:学习率
n_iter:权重向量的训练次数
w_:神经分叉权重向量
error_:用于记录神经元判断出错次数
"""
def __init__(self, eta = 0.01, n_iter = 10):
self.eta = eta
self.n_iter = n_iter
pass
def fit(self, x, y):
"""
输入训练数据,培训神经元,x输入样本向量,y对应样本分类
x:shape[n_samples, n_features]
x:[[1, 2, 3], [4, 5, 6]]
n_samples:2
n_features:3
y:[1, -1]
"""
"""
初始化权重向量为0
加一是因为前面算法提到的w0,也就是步调函数的阈值
"""