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 相关文章推荐
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
python读写csv文件实例代码
Jul 05 Python
python实现点击按钮修改数据的方法
Jul 17 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
使用Python将语音转换为文本的方法
Aug 10 Python
Django如何继承AbstractUser扩展字段
Nov 27 Python
Python的logging模块基本用法
Dec 24 Python
使用python实现学生信息管理系统
Feb 25 Python
python使用pygame创建精灵Sprite
Apr 06 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
destoon官方标签大全
2014/06/20 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
php遍历目录方法小结
2015/03/10 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
python读取Android permission文件
2013/11/01 Python
python通过post提交数据的方法
2015/05/06 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
python numpy存取文件的方式
2020/04/01 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
全天然狗零食:Best Bully Sticks
2016/09/22 全球购物
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
敬老文明号事迹材料
2014/01/16 职场文书
2014年营销工作总结
2014/11/22 职场文书
学术会议邀请函
2015/01/30 职场文书
狮子林导游词
2015/02/03 职场文书
党员个人年度总结
2015/02/14 职场文书
实用求职信模板范文
2019/05/13 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android