python实现神经网络感知器算法


Posted in Python onDecember 20, 2017

现在我们用python代码实现感知器算法。

# -*- coding: utf-8 -*-
import numpy as np


class Perceptron(object):
 """
 eta:学习率
 n_iter:权重向量的训练次数
 w_:神经分叉权重向量
 errors_:用于记录神经元判断出错次数
 """

 def __init__(self, eta=0.01, n_iter=2):
  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,也就是步调函数阈值
  """
  self.w_ = np.zeros(1 + X.shape[1])
  self.errors_ = []
  for _ in range(self.n_iter):
   errors = 0
   """
   zip(X,y) = [[1,2,3,1],[4,5,6,-1]]
   xi是前面的[1,2,3]
   target是后面的1
   """
   for xi, target in zip(X, y):
    """
    predict(xi)是计算出来的分类
    """
    update = self.eta * (target - self.predict(xi))
    self.w_[1:] += update * xi
    self.w_[0] += update
    print update
    print xi
    print self.w_
    errors += int(update != 0.0)
    self.errors_.append(errors)
    pass

 def net_input(self, X):
  """
  z = w0*1+w1*x1+....Wn*Xn
  """
  return np.dot(X, self.w_[1:]) + self.w_[0]

 def predict(self, X):
  return np.where(self.net_input(X) >= 0, 1, -1)


if __name__ == '__main__':
 datafile = '../data/iris.data.csv'
 import pandas as pd

 df = pd.read_csv(datafile, header=None)
 import matplotlib.pyplot as plt
 import numpy as np

 y = df.loc[0:100, 4].values
 y = np.where(y == "Iris-setosa", 1, -1)
 X = df.iloc[0:100, [0, 2]].values
 # plt.scatter(X[:50, 0], X[:50, 1], color="red", marker='o', label='setosa')
 # plt.scatter(X[50:100, 0], X[50:100, 1], color="blue", marker='x', label='versicolor')
 # plt.xlabel("hblength")
 # plt.ylabel("hjlength")
 # plt.legend(loc='upper left')
 # plt.show()

 pr = Perceptron()
 pr.fit(X, y)

其中数据为

python实现神经网络感知器算法 

控制台输出为

python实现神经网络感知器算法 

你们跑代码的时候把n_iter设置大点,我这边是为了看每次执行for循环时方便查看数据变化。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
给Python的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 Python
python对DICOM图像的读取方法详解
Jul 17 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
Python实现简单的语音识别系统
Dec 13 Python
django+echart绘制曲线图的方法示例
Nov 26 Python
Python测试线程应用程序过程解析
Dec 31 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
python解释器安装教程的方法步骤
Jul 02 Python
python 下划线的不同用法
Oct 24 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
ASP.NET Core中的配置详解
Feb 05 Python
Python代码实现KNN算法
Dec 20 #Python
详解appium+python 启动一个app步骤
Dec 20 #Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 #Python
Python实现感知机(PLA)算法
Dec 20 #Python
详解Python nose单元测试框架的安装与使用
Dec 20 #Python
使用python实现knn算法
Dec 20 #Python
python实现kNN算法
Dec 20 #Python
You might like
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
原生JS实现自定义滚动条效果
2020/10/27 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python切换pip安装源的方法详解
2016/11/18 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
通过cmd进入python的步骤
2020/06/16 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
财产公证书样本
2014/04/04 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
大学生活动总结模板
2014/07/02 职场文书
感谢信格式范文
2015/01/22 职场文书
网络妈妈观后感
2015/06/08 职场文书
教研活动主持词
2015/07/03 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python