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写的一个简单监控系统
Jun 19 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 Python
python使用requests.session模拟登录
Aug 09 Python
python 实现多维数组转向量
Nov 30 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
python游戏开发的五个案例分享
Mar 09 Python
详解Python中的Lock和Rlock
Jan 26 Python
Python基础之操作MySQL数据库
May 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
php下实现折线图效果的代码
2007/04/28 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
php实现点击可刷新验证码
2015/11/07 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Python数据类型之List列表实例详解
2019/05/08 Python
Django的models中on_delete参数详解
2019/07/16 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
皮肤科医师岗位职责
2013/12/04 职场文书
实践单位评语
2014/04/26 职场文书
集体生日活动方案
2014/08/18 职场文书
罗马假日观后感
2015/06/08 职场文书
欢送会主持词
2015/07/01 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js
nginx lua 操作 mysql
2022/05/15 Servers