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定时检查某个进程是否已经关闭的方法
May 20 Python
Python合并字符串的3种方法
May 21 Python
深入理解Django中内置的用户认证
Oct 06 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
使用Python从零开始撸一个区块链
Mar 14 Python
python里 super类的工作原理详解
Jun 19 Python
python matplotlib拟合直线的实现
Nov 19 Python
Python: 传递列表副本方式
Dec 19 Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 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网站在线人数统计
2008/04/09 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
python计算auc指标实例
2017/07/13 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
Django model反向关联名称的方法
2018/12/15 Python
Pandas中resample方法详解
2019/07/02 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
四年的大学生生活自我评价
2013/12/09 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
二手房买卖协议书
2014/04/10 职场文书
医院护士工作检讨书
2014/10/26 职场文书
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android