Keras入門Jupytor的簡單介紹以及感知機實現超平面對點的分類
Anaconda集成了輕量級的Jupytor解釋器,接下來介紹一下這款解釋器的基本操作
Juptytor的介紹及使用
Jupyter Notebook 的本質是一個 Web 應用程序,便於創建和共享文學化程序文檔,支持實時代碼,數學方程,可視化和 markdown。 用途包括:數據清理和轉換,數值模擬,統計建模,機器學習等等 [1] 。- 引自百度百科
安裝帶圖形的Anaconda後可通過Anaconda的界面點擊Launch進入
也可以通過在cmd中敲入jupytor notebook +想打開的路徑
功能簡介
主界面如下
Files主要顯示當前的文件系統,Running可執行相關的cmd命令,可通過NEW來創建相應的文檔
簡單感知機
接下來通過簡單感知機的書寫,熟悉jupytor 解釋器並感受簡單神經元網絡
- 首先點擊New-新建python文件
- 在新創建的文件頂部修改文件名
- 使用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("原始曲線與感知機近似結果比較")
感知機劃分的結果與原結果比較