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多进程编程技术实例分析
Sep 16 Python
Python中的urllib模块使用详解
Jul 07 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Unicode和Python的中文处理
Mar 19 Python
浅谈flask截获所有访问及before/after_request修饰器
Jan 18 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
Python with标签使用方法解析
Jan 17 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
利用python控制Autocad:pyautocad方式
Jun 01 Python
python爬虫筛选工作实例讲解
Nov 23 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
模仿OSO的论坛(三)
2006/10/09 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
DOM 事件流详解
2015/01/20 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
Python 探针的实现原理
2016/04/23 Python
Python 基础教程之包和类的用法
2017/02/23 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
Python中整数的缓存机制讲解
2019/02/16 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
python 实现矩阵填充0的例子
2019/11/29 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
如何解决安装python3.6.1失败
2020/07/01 Python
python 如何调用 dubbo 接口
2020/09/24 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
自我评价的正确写法
2013/09/19 职场文书
北大青鸟学生求职信
2013/09/24 职场文书
京剧自荐信
2014/01/26 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
中学语文教学反思
2016/02/16 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
Python中的xlrd模块使用整理
2021/06/15 Python