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实现baidu hi自动登录的代码
Feb 10 Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
python实现的系统实用log类实例
Jun 30 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
Python元组常见操作示例
Feb 19 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
python根据txt文本批量创建文件夹
Dec 08 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
Pytest之测试命名规则的使用
Apr 16 Python
Python机器学习之PCA降维算法详解
May 19 Python
基于Python实现流星雨效果的绘制
Mar 18 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实现的XML操作类【XML Library】
2016/12/29 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
python机器学习之KNN分类算法
2018/08/29 Python
Python3爬虫全国地址信息
2019/01/05 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
美国知名生活购物网站:Goop
2017/11/03 全球购物
幼儿园植树节活动总结
2014/07/04 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
八一建军节演讲稿
2014/09/10 职场文书
土地转让协议书
2014/09/27 职场文书
房屋出售授权委托书
2014/10/12 职场文书
颐和园英文导游词
2015/01/30 职场文书
单位实习介绍信
2015/05/05 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
《角的度量》教学反思
2016/02/18 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python