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中reload(module)的用法示例详解
Sep 15 Python
python装饰器深入学习
Apr 06 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
Django CBV类的用法详解
Jul 26 Python
python继承threading.Thread实现有返回值的子类实例
May 02 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
python 实现有道翻译功能
Feb 26 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
用PHP实现多级树型菜单
2006/10/09 PHP
php与php MySQL 之间的关系
2009/07/17 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
通过C++学习Python
2015/01/20 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
简单了解python反射机制的一些知识
2019/07/13 Python
对python中return与yield的区别详解
2020/03/12 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
经典大学生求职信范文
2014/01/06 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫