Keras入门Anaconda中Jupytor的简单介绍以及感知机实现超平面对点的分类

Keras入门Jupytor的简单介绍以及感知机实现超平面对点的分类

     Anaconda集成了轻量级的Jupytor解释器,接下来介绍一下这款解释器的基本操作

Juptytor的介绍及使用

    Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 [1]  。- 引自百度百科

  安装带图形的Anaconda后可通过Anaconda的界面点击Launch进入

 

    也可以通过在cmd中敲入jupytor notebook +想打开的路径

功能简介

主界面如下

Files主要显示当前的文件系统,Running可执行相关的cmd命令,可通过NEW来创建相应的文档 

简单感知机

接下来通过简单感知机的书写,熟悉jupytor 解释器并感受简单神经元网络

  1. 首先点击New-新建python文件
  2. 在新创建的文件顶部修改文件名
  3. 使用markingdown 风格书写注释,点击+号添加代码段选择代码段内容为标记,通过在文章前后加#生成注释,按ctrl+回车执行代码

      4.添加代码段 输入!python --version 按ctrl+回车执行代码查看python版本

      5.导入包并设定画布大小

import numpy as np
import matplotlib.pyplot as plt#绘图包
plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False 
plt.rcParams['figure.figsize']=(8.0,6.0)#生成图的大小

      6.随机生成100个点并通过随机生成直线进行划分

#产生新画布
fig = plt.figure()
#获取当前画布
figa = plt.gca()

#产生100个点
N=100
xn = np.random.rand(N,2)
x = np.linspace(0,1)

#产生直线

a = np.random.rand()
b = np.random.rand()
f = lambda x:a*x+b
plt.plot(x,f(x),'y')

#线性分割产生点
yn = np.zeros([N,1])

for i in range(N):
    if(f(xn[i,0])>=xn[i,1]):
        yn[i] = 1
        plt.plot(xn[i,0],xn[i,1],'bo',markersize=15)
    else:
        yn[i] = -1
        plt.plot(xn[i,0],xn[i,1],'go',markersize=12)
plt.title("随机数生成展示")

绘制出的结果 

 

       7.通过简单感知机对之前划分的点进行感知

#创建简单感知机
#传入之前创建的散点和线
def perceptron(xn,yn,MaxIter=1000,a=0.1,w=np.zeros(3)):
    #获取xn的个数
    N=xn.shape[0]
    #构造感知机
    f = lambda x:np.sign(w[0]*1+w[1]*x[0]+w[2]*x[1])
    #循环训练
    for _ in range(MaxIter):
        i = np.random.randint(N)
        if(yn[i] != f(xn[i,:])):
            w[0] = w[0] + yn[i]* 1 *a
            w[1] = w[1] + yn[i]* xn[i,0] *a
            w[2] = w[2] + yn[i]* xn[i,1] *a
    return w
w = perceptron(xn,yn)

#利用权重w ,计算y=ax+b中的a和b
bnew = -w[0]/w[2];
anew = -w[1]/w[2];
y = lambda x: anew * x + bnew;

#分割颜色
sep_color = (yn)/2.0;

#获取画布
plt.figure();
figa =plt.gca()
#绘制
plt.scatter(xn[:,0],xn[:,1],c=sep_color.flatten(),s=50)
#设置画布的图例
plt.plot(x,y(x),'b--',label='感知机分类结果')
plt.plot(x,f(x),'r',label='原始分类曲线')
plt.legend()
#设置画布标题
plt.title("原始曲线与感知机近似结果比较")

 感知机划分的结果与原结果比较

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章