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实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
Python实现的凯撒密码算法示例
Apr 12 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
python实现最速下降法
Mar 24 Python
python pymysql库的常用操作
Oct 16 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
python画条形图的具体代码
Apr 20 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全排列递归算法代码
2012/10/09 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
vue.js简单配置axios的方法详解
2017/12/13 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
Python图算法实例分析
2016/08/13 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
Python 的类、继承和多态详解
2017/07/16 Python
TensorFlow损失函数专题详解
2018/04/26 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
python实现图片九宫格分割
2021/03/07 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
模具专业推荐信
2013/10/30 职场文书
2014离婚协议书范文
2014/09/10 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
军训后的感想
2015/08/07 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python