上一篇博文中我们学习和回归了一下感知器分类模型,今天还是在上文的基础上做了一点扩展,上文中的感知器分类一方面是分类的效果有时候不太好,另一方面是没有实现分类过程的动态可视化,我们都知道感知器分类模型本质上就是在每一次迭代过程中进行权重动态调整的过程,今天我们基于这个出发点来实现每一轮迭代权重更新值得输出与分类的结果的动态绘制,内容很简单,具体如下:

#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:  感知器分类模型实践demo
'''import os
import sys
import xlrd
import xlwt
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormapaaa=(np.array([0, 0, 1.1])).T if sys.version_info<(3,0):#python2版本使用reload(sys)sys.setdefaultencoding("utf-8") def write2Excel(data_list,targetfile='res.xls'):'''将txt中的内容转置后写到Excel中'''j=0book=xlwt.Workbook(encoding='utf-8')table=book.add_sheet('w_b')for one_list in data_list:for i in range(len(one_list)):table.write(i,j,one_list[i])j+=1book.save(targetfile)def readOneExcelData(data='data/Homework4.xlsx',row=1,col=1):'''row: 起始行索引col: 起始列索引'''workbook=xlrd.open_workbook(data,encoding_override="utf-8")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)return np.array(data_list),[np.array(one) for one in data_list]def inputNetCal(X,W):'''计算'''print('W====>  ',W.tolist())res=np.dot(X,W)return resdef netWadjust(W,n,X,flag):'''网络权重自适应调整'''return W+((n*X)*flag)def biasCal(label,output,n):'''计算偏置项'''bias=label-outputbias+=n*biasreturn biasdef demoModel(datasets,x_total,W,n,iters,pic_path='demo_res.png'):'''感知器分类模型'''x1,x2,t=datasets[:, 1], datasets[:, 2], datasets[:, 3]label_list=[x_total[i][-1] for i in range(len(x_total))]print 'label_list: ',label_listright=0for i in range(iters):if i%5==0:right=0node=inputNetCal(x_total[i%5][:3],W)bias=biasCal(label_list[i%5],node,1)if x_total[i%5][-1]==1 and node<=0:   W=netWadjust(W,n,x_total[i%5][:3],1)elif x_total[i%5][-1]==0 and node>=0:W=netWadjust(W,n,x_total[i%5][:3],-1)elif x_total[i%5][-1]==1 and node>0:right+=1elif x_total[i%5][-1]==0 and node<0:right+=1else:passplt.cla()for h in range(len(x1)):if t[h]==1:plt.plot(x1[h],x2[h],'ro')else:plt.plot(x1[h],x2[h],'bo')plt.xlim(-1,1)  plt.ylim(-3,3)plt.title('Perceptron Model Dynamic Ploter')plt.grid(False)x_list=np.arange(-1,1,0.1)plt.plot(x_list,-((W[1]/W[2])*x_list)-(W[0]/W[2]))plt.pause(0.2)if right==5:plt.savefig(pic_path)print 'Best W: ',Wprint 'label_list: ',label_listprint 'i: ',ibreakreturn W.tolist(),biasif __name__=='__main__':n=1 w=(np.array([0, 0, 1.1])).T datasets,x_total=readOneExcelData(data='data/Homework4.xlsx',row=1,col=0)w,b=demoModel(datasets,x_total,w,n,50)w.append(b)data_list=[['W1','W2','W3','Bias'],w]write2Excel(data_list,targetfile='res.xls')

结果如下:

我们顺便保存了最终的分类结果、权重、偏置系数等数据,如下:

权重、偏置系数结果如下:  
                                                                           

本文的实现中,初始的权重与学习率都是固定的,当然也可以固定偏置系数,这样结果就会是唯一的了,简单的实践。

书接上文——python实现感知分类器模型分类过程动态可视化相关推荐

  1. Python 实现感知器模型、两层神经网络

    python 3.4 因为使用了 numpy 这里我们首先实现一个感知器模型来实现下面的对应关系 [[0,0,1], --- 0 [0,1,1], --- 1 [1,0,1], --- 0 [1,1, ...

  2. Python实现信用评分模型

    Python实现信用评分模型 信用评分是一种基于个人或实体的信用记录和历史数据来预测未来违约风险的方法.常用的信用评分模型有逻辑回归模型.决策树模型等.本文将介绍使用Python实现信用评分模型的过程 ...

  3. python拟合离散数据_Logit模型拟合实战案例(Python)——离散选择模型之六

    前言:本文详细介绍如何在Python中拟合Logit模型,包括数据准备.哑变量的处理.参数拟合结果解读等内容. 本文为系列离散选择模型(Discrete Choice Model, DCM)系列文章的 ...

  4. fasttext文本分类python实现_一个使用fasttext训练的新闻文本分类器/模型

    fastext是什么? Facebook AI Research Lab 发布的一个用于快速进行文本分类和单词表示的库.优点是很快,可以进行分钟级训练,这意味着你可以在几分钟时间内就训练好一个分类模型 ...

  5. python风控建模实战(分类器模型+回归模型)

    在全球数字经济时代,有一种金融优势,那就是基于消费者大数据的纯信用! 我们不妨称之为数据信用,它是一种面向未来的财产权,它是数字货币背后核心的抵押资产,它决定了数字货币时代信用创造的方向.速度和规模. ...

  6. 原理+代码|手把手教你使用Python实战反欺诈模型

    三本点击上方"早起Python",关注并"星标" 每日接收Python干货! 本文含 6192 字,15 图表截屏 建议阅读 20分钟 本文将基于不平衡数据,使 ...

  7. 如何利用 C# 实现神经网络的感知器模型?

    前几天我们介绍了 如何利用 C# 对神经网络模型进行抽象,在这篇图文中,我们抽象了单个神经元 Neuro,网络层 Layer,网络结构 Network,激活函数 IActivationFunction ...

  8. python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码

    原标题:手把手教你使用Python实战反欺诈模型|原理+代码 作者 | 萝卜 来源 | 早起Python(ID: zaoqi-python) 本文将基于不平衡数据,使用Python进行 反欺诈模型数据 ...

  9. 零基础python入门书籍推荐书目_铁粉看过来!送书啦,Python推荐书单,送书10本!...

    原标题:铁粉看过来!送书啦,Python推荐书单,送书10本! 上个月送书福利不断,一波接一波,今天小编带来了一份非常不错的Python书单,非常感谢博文视点的大力支持,这次的书涉及Python入门, ...

  10. python训练手势分类器_机器学习零基础?手把手教你用TensorFlow搭建图像分类器|干货...

    编者按:Pete Warden是TensorFlow移动团队的技术负责人.曾在Jetpac担任首次技术官.Jetpac的深度学习技术经过优化,可在移动和嵌入式设备上运行.该公司已于2014年被谷歌收购 ...

最新文章

  1. javascript基础 之 json
  2. 简单但经典的算法题:有效字母的异位词
  3. 关闭 Sublime Text 3 自动更新
  4. Abp框架之执行Update-Database 命令系列错误
  5. 《Java程序员面试宝典》读书笔记1
  6. MyBatis中in的使用
  7. 最强动画制作人书包_声优访谈丨恋与制作人动画中配声优访谈——夏磊
  8. Randomatic mac - AE随机摆动的字母图层效果脚本
  9. 【图论】最短路学习笔记
  10. C语言中extern关键字详解
  11. 利用自己的祖源成分结果画祖源成分饼图
  12. 神泣单机服务器维护,神泣单机版
  13. python win32com Dispatch, DispatchEx 无法打开(启动)excel pywintypes.com_error: (-2146959355, ‘服务器运行失败‘
  14. 剖析:谈谈微信小游戏的成功点
  15. mac设计师系列 Adobe “全家桶” 15款设计软件 值得收藏!
  16. C++版 PPyolo+部署记录
  17. Python日志模块log
  18. CSS标准文档流与脱离文档流,成功拿到offer
  19. Android 7.1.2(Android N) Android系统启动流程
  20. MacBook Pro完整卸载及安装激活VMware Fusion13.0.0教程

热门文章

  1. Android-LayoutParams的那些事
  2. QTP的那些事--打开脚本文件弹出“unexpected file format”错误
  3. JavaScript强化教程 —— 资源打包工具的使用及资源的异步加载处理
  4. spark RDD transformation与action函数整理
  5. LVS+KeepAlived,RabbitMQ高可用负载均衡
  6. MySQL用sql复制表数据到新表的方法
  7. 安装ffmpeg及nginx模块
  8. mongodb常用操作——命令行
  9. C# .Net ListT中Remove()、RemoveAt()、RemoveRange()、RemoveAll()的区别,ListT删除汇总
  10. Makefile文件(一)_介绍