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 08 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
python实现三维拟合的方法
Dec 29 Python
selenium处理元素定位点击无效问题
Jun 12 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 Python
python将字母转化为数字实例方法
Oct 04 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 Python
python从Oracle读取数据生成图表
Oct 14 Python
python实现KNN近邻算法
Dec 30 Python
教你怎么用Python生成九宫格照片
May 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
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
vue请求数据的三种方式
2020/03/04 Javascript
python计算方程式根的方法
2015/05/07 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
pandas数据集的端到端处理
2019/02/18 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
室内设计专业个人的自我评价
2013/12/18 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
施工安全协议书
2016/03/22 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python