今天有一个任务需求就是要使用感知器分类模型来对我们手里面的数据集进行简单的分类实验,我们都知道感知器是一种比较简单的线性分类器,只能够处理线性可分的样本数据,为了再回顾一下上学时候的内容,我特意翻出来以前的文档,下面是感知器算法的简单介绍:

简单看过原理后,我们看下下面这一个简单的算法实例:
                                        

关于感知分类器详细地介绍的文章,网上还有很多很多,我这里就不再多解释了,相信上面的算法原理和算法实例只要认真看完手推计算一遍之后就没什么问题了。

下面我们来进行简单的实现,具体如下:

#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:  感知器分类模型实践demo
'''import os
import sys
import xlrd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormapif sys.version_info<(3,0):#python2版本使用reload(sys)sys.setdefaultencoding("utf-8")class myPerceptron(object):'''感知器分类模型'''def __init__(self,eta=0.01,n_iter=10):'''初始化'''self.eta=etaself.n_iter=n_iterdef fit(self, X, y):'''拟合器'''self.w_=np.zeros(1+X.shape[1]) # Add w_0self.errors_=[]for _ in range(self.n_iter):errors=0for xi,target in zip(X,y):update=self.eta*(target-self.predict(xi))self.w_[1:]+=update*xiself.w_[0]+=updateerrors+=int(update!=0.0)self.errors_.append(errors)return selfdef inputCal(self, X):'''计算'''print('W====>  ',self.w_[:].tolist())X_dot=np.dot(X,self.w_[1:])+self.w_[0]return X_dotdef predict(self, X):'''预测'''return np.where(self.inputCal(X)>=0.0,1,-1) def readOneExcelData(data='data/data.xlsx',row=1,col=1):'''row: 起始行索引col: 起始列索引'''workbook=xlrd.open_workbook(data,'rb')table=workbook.sheets()[0]row_num,col_num=table.nrows,table.ncolsdata_list=[]for i in range(row,row_num):one_list=[]for j in range(col,col_num):one_list.append(table.cell_value(i,j)) data_list.append(one_list)X_list=[one[:-1] for one in data_list]y_list=[one[-1] for one in data_list]return np.array(X_list),np.array(y_list)def originalDataPloter(X,save_path='original_data.png'):'''对原始数据进行可视化'''plt.clf()plt.scatter(X[:2, 0], X[:2, 1],color='red',marker='o',label='0 class')plt.scatter(X[2:, 0], X[2:, 1],color='blue',marker='x',label='1 class')plt.title('Original Data Distribution')plt.legend(loc='upper left')plt.savefig(save_path)def resultPloter(X,y,classifier,resolution=0.02,save_path='result.png'):'''分类结果可视化'''markers=('s','x','o','^','v')colors=('red','blue','lightgreen','gray','cyan')cmap = ListedColormap(colors[:len(np.unique(y))])x1_min,x1_max=X[:, 0].min()-1,X[:, 0].max()+1x2_min,x2_max=X[:, 1].min()-1,X[:, 1].max()+1xx1,xx2=np.meshgrid(np.arange(x1_min, x1_max,resolution),np.arange(x2_min, x2_max, resolution))Z=classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)Z=Z.reshape(xx1.shape)plt.clf()plt.contourf(xx1,xx2,Z,alpha=0.4,cmap=cmap)plt.xlim(xx1.min(),xx1.max())plt.ylim(xx2.min(),xx2.max())for idx, cl in enumerate(np.unique(y)):plt.scatter(x=X[y == cl, 0], y=X[y == cl, 1],alpha=0.8, c=cmap(idx),marker=markers[idx], label=str(cl).split('.')[0].strip()+' class')plt.legend(loc='upper left')plt.title('myPerceptron Result')plt.savefig(save_path)if __name__=='__main__':X_list,y_list=readOneExcelData(data='data/data.xlsx',row=1,col=0)#原始数据可视化originalDataPloter(X_list,save_path='original_data.png')#模型训练拟合model=myPerceptron(eta=0.01,n_iter=10)model.fit(X_list,y_list)#结果可视化resultPloter(X_list,y_list,model,resolution=0.02,save_path='result.png')

整体的逻辑是很简单的,代码实现里面加入了数据的可视化部分,我们首先对原始样本的数据进行了可视化,之后分类器训练完成后,对分类结果同样进行了可视化。

其中,原始数据可视化结果如下:

使用训练后的感知器分类模型可视化结果如下:

小小的实践,记录一下。

感知器分类模型回顾与python实现相关推荐

  1. 多层感知器用实际例子和Python代码进行解释情绪分析

    多层感知器用实际例子和Python代码进行解释情绪分析 多层感知器是一种学习线性和非线性数据之间关系的神经网络. 这是专门介绍深度学习系列的第一篇文章,深度学习是一组机器学习方法,其根源可以追溯到20 ...

  2. 使用pytorch搭建MLP多层感知器分类网络判断LOL比赛胜负

    使用pytorch搭建MLP多层感知器分类网络判断LOL比赛胜负 1. 数据集 百度网盘链接,提取码:q79p 数据集文件格式为CSV.数据集包含了大约5万场英雄联盟钻石排位赛前15分钟的数据集合,总 ...

  3. 机器学习系列(一)感知器分类算法

    分类算法有两种类型:感知器和适应性线性神经元 神经元的数学表示 w=[w1w2...wm],x=[x1x2...xm]w=\begin{bmatrix} w_1 \\ w_2 \\ ... \\ w_ ...

  4. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  5. 感知器(perceptron)模型分析及实现

    感知器模型分析及实现 1. 感知器模型 2. 几何意义 3. 感知器模型的训练 4. 批处理训练过程 4.1 训练数据的规范化 4.2 批处理感知器算法 实现代码 \qquad 感知器 (percep ...

  6. matlab实现感知器分类 高斯分布,模式作业设计

    1.1题目 给出K-均值算法的程序框图,编写程序,自选一组分别属于三类的三维模式样本(图2.13),并给它们进行聚类分析. 1.2算法原理 K-均值算法也称C-均值算法,是根据函数准则进行分类的聚类算 ...

  7. AI实战:从入门到精通系列——用感知器实现情感分类(一)

    前言 人工智能的第一次高潮始于上世纪50年代.在算法方面,感知器数学模型被提出用于模拟人的神经元反应过程,并能够使用梯度下降法从训练样本中自动学习,完成分类任务. 感知器 感知器算法在上个世纪50-7 ...

  8. 计算智能——感知器模型

    主要内容 1.感知器总述 2.感知器模型 3.感知器策略(建立损失函数) 4.感知器算法(梯度下降和随机梯度下降) 4.1梯度下降 4.2随机梯度下降 5.感知器MATLAB简单实现 5.1newp函 ...

  9. 感知器及其在python中的实现_感知器及其Python实现

    感知器是由美国计算机科学家罗森布拉特(F.Roseblatt)于1957年提出的.感知器可谓是最早的人工神经网络.单层感知器是一个具有一层神经元.采用阈值激活函数的前向网络.通过对网络权值的训练,可以 ...

  10. 深度学习(一)多层感知器MLP/人工神经网络ANN

    目录 一.定义和公式 1. 多层感知器 Multi Layer Perceptron MLP 2. MLP实现非线性分类 3. Keras介绍 二. 代码实战 1. 建立MLP模型实现二分类 1.1  ...

最新文章

  1. 95. 费解的开关【二级制枚举】
  2. 你不知道的CDN圈内黑话有哪些?
  3. 51单片机C语言led流水灯及数码管实现秒表
  4. Android之解决PC端上传http表单格式文件手机解析文件名乱码问题和PC浏览器下载文件的文件名显示乱码问题
  5. xshell监听端口_监听端口修改_笨办法学Linux 远程访问 (原理、实践、记录与排错)-视频课程_Linux视频-51CTO学院...
  6. Duwamish配置持久化学习笔记
  7. Laravel源码解析之Request
  8. TCP/IP系列——长连接与短连接的区别
  9. TensorFlow手把手教你概率编程:TF Probability内置了开源教材,新手友好
  10. vue.js动态组件:is特性
  11. rx580默认频率1150_不到1300元的RX580 显卡能买吗?!迪兰 RX580 2048SP 4G X-Serial 开箱测试...
  12. Windows添加开机和关闭开机启动项
  13. 详解Gem5模拟器的4种CPU模型
  14. 批量转换——颜色代码(16进制)与RGB
  15. 【pion】ice-single-port解析
  16. gridlayout计算器java_java新手编写亲戚计算器求助
  17. MybatisPlus报错can not find lambda cache for this entity
  18. 2023AP微积分AB考试报名开启
  19. python 混合整数规划_混合整数规划仓库位置(Python+GLPK)
  20. 使用手机或电脑远程连接windows自带的远程桌面

热门文章

  1. CHAPTER 28 VMX SUPPORT FOR ADDRESS TRANSLATION
  2. Vue双向绑定的实现原理系列(三):监听器Observer和订阅者Watcher
  3. echarts 模拟迁徙
  4. 高级I/O-----dup/dup2
  5. dwz中的table
  6. 【超详细转】VMware 9 安装 Mac OS X 10.8 Mountain Lion 图文全程
  7. IIS8,OUTLOOK OWA 2013鉴赏
  8. MySQL数据以全量和增量方式,同步到ES搜索引擎
  9. 查询sql数据库端口 笔记
  10. win 7-8-10 下 删除我的电脑下多余的设备和驱动器,腾讯视频,酷我音乐,手机