import numpy as np
import matplotlib.pyplot as plt
import math def create_data(w1=3,w2=-7,b=4,seed=1,size=30):
np.random.seed(seed)
w = np.array([w1,w2])
x1 = np.arange(0,size)
v = np.random.normal(loc=0,scale=5,size=size)
x2 = v - (b+w[0]*x1)/(w[1]*1.0)
y_train=[]
x_train = np.array(zip(x1,x2))
for item in v:
if item >=0:
y_train.append(1)
else:
y_train.append(-1)
y_train = np.array(y_train)
return x_train,y_train def SGD(x_train,y_train):
alpha=0.01
w,b=np.array([0,0]),0
c,i=0,0
while i<len(x_train):
if (x_train[i].dot(w)+b)*y_train[i] <=0:
c +=1
w=w+alpha*y_train[i]*x_train[i]
b=b+alpha*y_train[i]
print("count:%s index:%s w:%s:b:%s" %(c,i,w,b))
i=0
else:
i=i+1
return w,b def test_and_show(w1,w2,b,size,w_estimate,b_estimate,x_train,y_train):
fig = plt.figure()
ax1 = fig.add_subplot(111)
plt.xlabel('x1')
plt.ylabel('x2')
x1 = np.arange(0,size+1,size)
x2 = -(b+w1*x1)/(w2*1.0)
ax1.plot(x1,x2,c="black")
x2 = -(b_estimate+w_estimate[0]*x1)/w_estimate[1]*1.0
ax1.plot(x1,x2,c="red")
for i in range(0,len(x_train)):
if y_train[i]>0:
ax1.scatter(x_train[i,0],x_train[i,1],c="r",marker='o')
else:
ax1.scatter(x_train[i,0],x_train[i,1],c="b",marker="^")
plt.show() if __name__ == '__main__':
w1,w2,b=3,-7,4
size=50
x_train,y_train=create_data(w1,w2,b,1,size)
w_estimate,b_estimate=SGD(x_train,y_train)
test_and_show(w1,w2,b,size,w_estimate,b_estimate,x_train,y_train)

count:1 index:0 w:[0.         0.08693155]:b:0.01
count:2 index:9 w:[-0.09 0.05511436]:b:0.0
count:3 index:8 w:[-0.01 0.11106631]:b:0.01
count:4 index:9 w:[-0.1 0.07924912]:b:0.0
count:5 index:8 w:[-0.02 0.13520107]:b:0.01
count:6 index:9 w:[-0.11 0.10338388]:b:0.0
count:7 index:8 w:[-0.03 0.15933583]:b:0.01
count:8 index:9 w:[-0.12 0.12751864]:b:0.0
count:9 index:8 w:[-0.04 0.18347059]:b:0.01
count:10 index:9 w:[-0.13 0.1516534]:b:0.0
count:11 index:8 w:[-0.05 0.20760535]:b:0.01
count:12 index:9 w:[-0.14 0.17578815]:b:0.0
count:13 index:8 w:[-0.06 0.23174011]:b:0.01
count:14 index:9 w:[-0.15 0.19992291]:b:0.0
count:15 index:8 w:[-0.07 0.25587487]:b:0.01
count:16 index:9 w:[-0.16 0.22405767]:b:0.0
count:17 index:8 w:[-0.08 0.28000963]:b:0.01
count:18 index:9 w:[-0.17 0.24819243]:b:0.0
count:19 index:18 w:[0.01 0.33316026]:b:0.01
count:20 index:7 w:[-0.06 0.33550632]:b:0.0
count:21 index:9 w:[-0.15 0.30368913]:b:-0.01
count:22 index:18 w:[0.03 0.38865696]:b:0.0
count:23 index:7 w:[-0.04 0.39100302]:b:-0.01
count:24 index:9 w:[-0.13 0.35918582]:b:-0.02
count:25 index:16 w:[-0.29 0.29352152]:b:-0.03
count:26 index:8 w:[-0.21 0.34947347]:b:-0.02
count:27 index:18 w:[-0.03 0.4344413]:b:-0.01
count:28 index:9 w:[-0.12 0.40262411]:b:-0.02
count:29 index:9 w:[-0.21 0.37080691]:b:-0.03
count:30 index:18 w:[-0.03 0.45577474]:b:-0.02
count:31 index:9 w:[-0.12 0.42395755]:b:-0.03
count:32 index:9 w:[-0.21 0.39214035]:b:-0.04
count:33 index:18 w:[-0.03 0.47710818]:b:-0.03
count:34 index:9 w:[-0.12 0.44529098]:b:-0.04
count:35 index:9 w:[-0.21 0.41347379]:b:-0.05
count:36 index:18 w:[-0.03 0.49844162]:b:-0.04
count:37 index:9 w:[-0.12 0.46662442]:b:-0.05
count:38 index:9 w:[-0.21 0.43480723]:b:-0.06
count:39 index:18 w:[-0.03 0.51977506]:b:-0.05
count:40 index:9 w:[-0.12 0.48795786]:b:-0.06
count:41 index:9 w:[-0.21 0.45614067]:b:-0.07
count:42 index:44 w:[0.23 0.65296677]:b:-0.06
count:43 index:7 w:[0.16 0.65531283]:b:-0.07
count:44 index:7 w:[0.09 0.65765889]:b:-0.08
count:45 index:7 w:[0.02 0.66000495]:b:-0.09
count:46 index:9 w:[-0.07 0.62818775]:b:-0.1
count:47 index:9 w:[-0.16 0.59637056]:b:-0.11
count:48 index:9 w:[-0.25 0.56455336]:b:-0.12
count:49 index:44 w:[0.19 0.76137946]:b:-0.11
count:50 index:7 w:[0.12 0.76372552]:b:-0.12
count:51 index:7 w:[0.05 0.76607158]:b:-0.13
count:52 index:7 w:[-0.02 0.76841764]:b:-0.14
count:53 index:9 w:[-0.11 0.73660045]:b:-0.15
count:54 index:9 w:[-0.2 0.70478325]:b:-0.16
count:55 index:9 w:[-0.29 0.67296605]:b:-0.17
count:56 index:35 w:[-0.64 0.517885]:b:-0.18
count:57 index:8 w:[-0.56 0.57383695]:b:-0.17
count:58 index:8 w:[-0.48 0.62978891]:b:-0.16
count:59 index:8 w:[-0.4 0.68574086]:b:-0.15
count:60 index:18 w:[-0.22 0.77070869]:b:-0.14
count:61 index:9 w:[-0.31 0.7388915]:b:-0.15
count:62 index:35 w:[-0.66 0.58381044]:b:-0.16
count:63 index:8 w:[-0.58 0.6397624]:b:-0.15
count:64 index:8 w:[-0.5 0.69571435]:b:-0.14
count:65 index:8 w:[-0.42 0.75166631]:b:-0.13
count:66 index:18 w:[-0.24 0.83663414]:b:-0.12
count:67 index:9 w:[-0.33 0.80481694]:b:-0.13
count:68 index:26 w:[-0.59 0.6938186]:b:-0.14
count:69 index:8 w:[-0.51 0.74977055]:b:-0.13
count:70 index:8 w:[-0.43 0.8057225]:b:-0.12
count:71 index:18 w:[-0.25 0.89069034]:b:-0.11
count:72 index:9 w:[-0.34 0.85887314]:b:-0.12
count:73 index:16 w:[-0.5 0.79320884]:b:-0.13
count:74 index:18 w:[-0.32 0.87817667]:b:-0.12
count:75 index:16 w:[-0.48 0.81251236]:b:-0.13
count:76 index:18 w:[-0.3 0.89748019]:b:-0.12
count:77 index:9 w:[-0.39 0.865663]:b:-0.13
count:78 index:44 w:[0.05 1.0624891]:b:-0.12
count:79 index:9 w:[-0.04 1.0306719]:b:-0.13
count:80 index:9 w:[-0.13 0.99885471]:b:-0.14
count:81 index:9 w:[-0.22 0.96703751]:b:-0.15
count:82 index:9 w:[-0.31 0.93522032]:b:-0.16
count:83 index:9 w:[-0.4 0.90340312]:b:-0.17

神经网络 感知机 Perceptron python实现的更多相关文章

  1. 2. 感知机(Perceptron)基本形式和对偶形式实现

    1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...

  2. 吴裕雄 python 机器学习——人工神经网络感知机学习算法的应用

    import numpy as np from matplotlib import pyplot as plt from sklearn import neighbors, datasets from ...

  3. 感知机(python实现)

    感知机(perceptron)是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1).感知机对应于输入空间中将实例划分为两类的分离超平面.感知机旨在求出该超平面,为求得超平面导 ...

  4. BP神经网络原理及python实现

    [废话外传]:终于要讲神经网络了,这个让我踏进机器学习大门,让我读研,改变我人生命运的四个字!话说那么一天,我在乱点百度,看到了这样的内容: 看到这么高大上,这么牛逼的定义,怎么能不让我这个技术宅男心 ...

  5. 20151227感知机(perceptron)

    1 感知机 1.1 感知机定义 感知机是一个二分类的线性分类模型,其生成一个分离超平面将实例的特征向量,输出为+1,-1.导入基于误分类的损失函数,利用梯度下降法对损失函数极小化,从而求得此超平面,该 ...

  6. 感知机(perceptron)概念与实现

    感知机(perceptron) 模型: 简答的说由输入空间(特征空间)到输出空间的如下函数: \[f(x)=sign(w\cdot x+b)\] 称为感知机,其中,\(w\)和\(b\)表示的是感知机 ...

  7. 神经网络(BP)算法Python实现及简单应用

    首先用Python实现简单地神经网络算法: import numpy as np # 定义tanh函数 def tanh(x): return np.tanh(x) # tanh函数的导数 def t ...

  8. 深层神经网络框架的python实现

    概述 本文demo非常适合入门AI与深度学习的同学,从最基础的知识讲起,只要有一点点的高等数学.统计学.矩阵的相关知识,相信大家完全可以看明白.程序的编写不借助任何第三方的深度学习库,从最底层写起. ...

  9. 机器学习(4):BP神经网络原理及其python实现

    BP神经网络是深度学习的重要基础,它是深度学习的重要前行算法之一,因此理解BP神经网络原理以及实现技巧非常有必要.接下来,我们对原理和实现展开讨论. 1.原理  有空再慢慢补上,请先参考老外一篇不错的 ...

随机推荐

  1. Python新手的奇技淫巧,掌握在手的充实感

    以下是我长久以来收集的一些Python实用技巧和工具,希望能对刚学习Python的新手有所帮助.  1.交换变量 x = 6 y = 5 x, y = y, x print x >>> ...

  2. PHP的那些魔术方法(一)

    在PHP中,有一堆魔术方法,服务于类和对象.PHP虽然也是纯种的面向对象语言,但是之前的PHP还真不是,所以有一些面向对象的标准实现并不完善,比如重载.但是,我们可以通过一些魔术方法来弥补,例如__c ...

  3. k8s garbage collector分析(2)-处理逻辑分析

    garbage collector介绍 Kubernetes garbage collector即垃圾收集器,存在于kube-controller-manger中,它负责回收kubernetes中的资 ...

  4. SonarQube安装Java扫描插件

    近段时间在研究sonarqube,成功扫描python项目,但是扫描java项目失败. 在网上查询到,扫描java项目需要安装Java插件. 如下图: 而我在最新的sonarqube中搜索java,没 ...

  5. Css3 3D 旋转动画效果

    需求: 1.一个列表滑动效果为360 旋转 准备: 1.css 基础 2.Css 动画基础animation 3.transform-style概念 4 transform 概念 5 JavaScri ...

  6. hdu5909-Tree Cutting【FWT】

    正题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5909 题目大意 给出\(n\)和\(m\)(\(m=2^k\)).再给出一个大小为\(n\)的树 ...

  7. 深入浅出WPF-12.绘图与动画

    绘图 1)Brush(画刷) SolidColorBrush实心画刷,直接使用颜色赋值 LinearGradientBrush线性渐变画刷,色彩沿设定的直线方向.按设定的变化点进行渐变 RadialG ...

  8. Qt和JavaScript使用QWebChannel交互一——和Qt内嵌网页交互

    Qt和JavaScript使用QWebChannel交互一--和Qt内嵌网页交互 目录 Qt和JavaScript使用QWebChannel交互一--和Qt内嵌网页交互 前言 一.效果 二.实现过程 ...

  9. Spring源码之创建AOP代理之增强器的获取

    前言 在上一篇博文中我们说到了通过自定义配置完成了对AnnotationAwareAspectJAutoProxyCreator类型的自动注册,那么这个类究竟做了什么工作从而完成AOP的操作呢?首先我 ...

  10. java 从零开始手写 RPC (05) reflect 反射实现通用调用之服务端

    通用调用 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 java 从零开始手写 RPC (03) 如何 ...