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通过正则表达式选取callback的方法
Jul 18 Python
Python中标准模块importlib详解
Apr 16 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Tensorflow之Saver的用法详解
Apr 23 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
pytorch常见的Tensor类型详解
Jan 15 Python
用python实现学生管理系统
Jul 24 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
Python本地及虚拟解释器配置过程解析
Oct 13 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
flask项目集成swagger的方法
Dec 09 Python
Python下opencv库的安装过程及问题汇总
Jun 11 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 setTime 设置当前时间的代码
2012/08/27 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
杨氏矩阵查找的JS代码
2013/03/21 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
python实现倒计时的示例
2014/02/14 Python
Python对数据库操作
2016/03/28 Python
Python中动态创建类实例的方法
2017/03/24 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
2013年入党人员的自我鉴定
2013/10/25 职场文书
党的群众路线调研报告
2014/11/03 职场文书
2014年维稳工作总结
2014/11/18 职场文书
社会实践活动报告
2015/02/05 职场文书
2016寒假假期总结
2015/10/10 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
详解JS WebSocket断开原因和心跳机制
2021/05/07 Javascript