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("原始曲線與感知機近似結果比較")

 感知機劃分的結果與原結果比較

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