写在前面:

参考:

1  《统计学习方法》第二章感知机【感知机的概念、误分类的判断】   http://pan.baidu.com/s/1hrTscza

2   点到面的距离

3   梯度下降

4   NumPy-快速处理数据    属性shape:表示几行几列;   dot(a,b) 计算数组、矩阵的乘积

(为了理解神经网络,我们应该先理解神经网络的组成单元--神经元神经元也叫做感知器。)

感知器算法

Python实现

#coding:utf-8
import numpy as np class Perceptron(object):
def __init__(self):
self.study_step = 1 #学习步长即学习率
self.study_total = 11 #学习次数即训练次数
self.w_total = 1 #w更新次数
#对数据集进行训练
def train(self, T):
w = np.zeros(T.shape[1]-1) # 初始化权重向量为0 [权重都从0开始]
b = 0 # 初始化阈值为0
print ' W X W B'
#训练study_total次
for study in range(self.study_total):
w_before = w #训练前的w值
b_before = b #训练前的b值
#训练
for t in range(T.shape[0]):
# 计算实际的y值,其期望值为T[0][2]
X = T[t][0:T.shape[1]-1] #X的值
Y = T[t][T.shape[1]-1] #期望值
distin = Y*self.input_X(X, w, b)
#判断X是否是误分类点
if distin <= 0:
w = w + self.study_step*Y*X
b = b + self.study_step*Y
print 'w',self.w_total,': x',t+1,w[0:w.shape[0]], ' ', b
self.w_total = self.w_total + 1 #经过训练后w、b都不在变化,说明训练集中已没有误分类点,那么跳出循环
if w_before is w and b_before == b:
print '训练后,得到w、b:', w[0:w.shape[0]], ' ', b
break
return w,b
#得出w*x+b的值
def input_X(self, X, w, b):
return np.dot(X,w) + b #wwww** #由X去预测Y值
def prediction(self, X, w, b):
Y = self.input_X(X, w, b)
return np.where(Y >= 0, 1, -1) if __name__ == '__main__':
per = Perceptron()
#训练数据集,x1=(3,3),x2=(4,3),x3=(1,1), 对应于y1=1,y2=1,y3=-1
T = np.array([[3,3,1],[4,3,1],[1,1,-1]]) #进行训练的数据集
w,b = per.train(T) #经过训练得到w\b X = np.array([3, 3]) # 对X进行预测
Y = per.prediction(X,w,b) #得到X的预测值
print 'X预测得到Y:',Y

  

感知器算法--python实现的更多相关文章

  1. 感知器及其Python实现

    感知器是由美国计算机科学家罗森布拉特(F.Roseblatt)于1957年提出的.感知器可谓是最早的人工神经网络.单层感知器是一个具有一层神经元.采用阈值激活函数的前向网络.通过对网络权值的训练,可以 ...

  2. Stanford大学机器学习公开课(三):局部加权回归、最小二乘的概率解释、逻辑回归、感知器算法

    (一)局部加权回归 通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting).如下图的左图.而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为 ...

  3. 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法

    课程大纲 欠拟合的概念(非正式):数据中某些非常明显的模式没有成功的被拟合出来.如图所示,更适合这组数据的应该是而不是一条直线. 过拟合的概念(非正式):算法拟合出的结果仅仅反映了所给的特定数据的特质 ...

  4. [置顶] 局部加权回归、最小二乘的概率解释、逻辑斯蒂回归、感知器算法——斯坦福ML公开课笔记3

    转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9113681 最近在看Ng的机器学习公开课,Ng的讲法循循善诱,感觉提高了不少 ...

  5. Perceptron Algorithm 感知器算法及其实现

    Rosenblatt于1958年发布的感知器算法,算是机器学习鼻祖级别的算法.其算法着眼于最简单的情况,即使用单个神经元.单层网络进行监督学习(目标结果已知),并且输入数据线性可分.我们可以用该算法来 ...

  6. 机器学习之感知器算法原理和Python实现

    (1)感知器模型 感知器模型包含多个输入节点:X0-Xn,权重矩阵W0-Wn(其中X0和W0代表的偏置因子,一般X0=1,图中X0处应该是Xn)一个输出节点O,激活函数是sign函数. (2)感知器学 ...

  7. 【2008nmj】Logistic回归二元分类感知器算法.docx

    给你一堆样本数据(xi,yi),并标上标签[0,1],让你建立模型(分类感知器二元),对于新给的测试数据进行分类. 要将两种数据分开,这是一个分类问题,建立数学模型,(x,y,z),z指示[0,1], ...

  8. 感知器算法PLA

    for batch&supervised binary classfication,g≈f <=> Eout(g)≥0 achieved through Eout(g)≈Ein(g ...

  9. 感知器算法 C++

    We can estimate the weight values for our training data using stochastic gradient descent. Stochasti ...

随机推荐

  1. python 标准库 -- os

    os os.getcwd() os.getcwd() # 获取当前工作目录 os.listdir(path) os.listdir('/tmp') # 列出指定目录下的文件和目录 os.mkdir(p ...

  2. 连接SQL SERVER数据库实例出错

    问题背景: 刚买的新电脑,昨天让公司IT部装了win10专业版系统,想体验一下.装完后一切正常,晚上带回家装自己需要的软件和系统更新,结果今天来公司发现数据库实例连不上了,拿到IT部,他们也没有找到原 ...

  3. HTML基础了解

     对HTML最基本的认识和编写:"我的第一个网页" HTML是什么: 它的全称是Hyper Text Markup Language超文本标记语言,页面中包括有视频.图片.链接等其 ...

  4. XCOM2中敌对生物设计分析(Aliens篇)

    Aliens Aliens作为游戏设定中入侵的外星人,有各式外貌及奇特的战斗方式,掌握一些高能科技或利用精神力量进行攻击 Sectoid 使用灵能战斗的外星人,并无高级版本,初级便会使用精神控制,生命 ...

  5. MySQL删除表方式差异

    数据库删除语句 Drop/Delete/Truncate比较 Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行). 删除某一行:Delete from 数据表名 ...

  6. 如何连接新浪sae共享数据库

    网上找了很久,太杂了,下文介绍如何连接新浪sae共享数据库,方便有效 1.首先贴出官方文档: 以下是一些和共享MySQL数据库服务相关的预定义常量,你可以直接引用这些参数来连接数据库: 用户名 : S ...

  7. .NET C#到Java没那么难,MVC篇

    最典型的JAVA MVC就是JSP + servlet + javabean的模式.比较好的MVC,老牌的有Struts.Webwork.新兴的MVC 框架有Spring MVC.Tapestry.J ...

  8. (转载)DBCP、C3P0、Proxool 、 BoneCP开源连接池的比较

    原文链接: http://blog.csdn.net/miclung/article/details/7231553    简介   使用评价  项目主页  DBCP DBCP是一个依赖Jakarta ...

  9. AngularJs学习笔记2-控制器、数据绑定、作用域

    上次分享完该系列文章后有朋友也建议说1.x版本除了维护也没有必要学习,可以学习2.0开始学习,我也知道1.x无论是从性能还是架构上都没有2.x好,但是我想因为现在也有一些朋友还在用1.x版本,因为1. ...

  10. 读书共享 Primer Plus C-part 8

    第十三章 文件输入/输出 fopen--fclose fopen 是文件的操作的开始 fclose是文件操作的结束 getc--putc getchar--putchar getc对应文件的获取单个字 ...