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 相关文章推荐
Eclipse + Python 的安装与配置流程
Mar 05 Python
Python实现的字典值比较功能示例
Jan 08 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
pandas通过索引进行排序的示例
Nov 16 Python
python 获取sqlite3数据库的表名和表字段名的实例
Jul 17 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
判断Threading.start新线程是否执行完毕的实例
May 02 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安装攻略:常见问题解答(二)
2006/10/09 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
python同时给两个收件人发送邮件的方法
2015/04/30 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
python基于SMTP协议发送邮件
2019/05/31 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
简单了解python元组tuple相关原理
2019/12/02 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
C语言如何决定使用那种整数类型
2016/11/26 面试题
创立科技Java面试题
2015/11/29 面试题
信息科学与技术专业求职信范文
2014/02/20 职场文书
会计岗位职责范本
2014/03/07 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
计算机专业自荐信
2014/05/24 职场文书
家长评语怎么写
2014/12/30 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python