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 ljust rjust center输出
Sep 06 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
Python用list或dict字段模式读取文件的方法
Jan 10 Python
Python多线程扫描端口代码示例
Feb 09 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
用Python将结果保存为xlsx的方法
Jan 28 Python
Python数据分析pandas模块用法实例详解
Nov 20 Python
python3.4中清屏的处理方法
Jul 06 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 Python
python中xlrd模块的使用详解
Feb 01 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使HTML标签自动补全闭合函数代码
2012/10/04 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
Vue中CSS动画原理的实现
2019/02/13 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
Python 时间处理datetime实例
2008/09/06 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
详解Python自建logging模块
2018/01/29 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
高级人员简历的自我评价分享
2013/11/03 职场文书
简历自我评价怎么写好呢?
2014/01/04 职场文书
大学毕业自我评价
2014/02/02 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
客户经理岗位职责
2015/01/31 职场文书
护士求职自荐信
2015/03/25 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python