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删除Java源文件中全部注释的实现方法
Aug 30 Python
python中利用Future对象异步返回结果示例代码
Sep 07 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 Python
python日期相关操作实例小结
Jun 24 Python
如何在python中实现随机选择
Nov 02 Python
浅谈Python type的使用
Nov 19 Python
python 实现单通道转3通道
Dec 03 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
Django全局启用登陆验证login_required的方法
Jun 02 Python
Pycharm plot独立窗口显示的操作
Dec 11 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
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
js下利用控制器载入对应脚本
2010/07/17 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
详解node.js 事件循环
2020/07/22 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python读取各种文件数据方法解析
2018/12/29 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
公司领导推荐信
2013/11/12 职场文书
暑期教师培训方案
2014/06/07 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
中标通知书范本
2015/04/17 职场文书
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang