成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

感知器及其在Python中的實現

開發 后端
感知器的概念類似于大腦基本處理單元神經元的工作原理。神經元由許多由樹突攜帶的輸入信號、胞體和軸突攜帶的一個輸出信號組成。當細胞達到特定閾值時,神經元會發出一個動作信號。這個動作要么發生,要么不發生。

 什么是感知器?

 

感知器及其在Python中的實現

 

生物神經元示意圖

感知器的概念類似于大腦基本處理單元神經元的工作原理。神經元由許多由樹突攜帶的輸入信號、胞體和軸突攜帶的一個輸出信號組成。當細胞達到特定閾值時,神經元會發出一個動作信號。這個動作要么發生,要么不發生。

類似地,感知器具有許多輸入(通常稱為特征),這些輸入被饋送到產生一個二元輸出的線性單元中。因此,感知器可用于解決二元分類問題,其中樣本將被識別為屬于預定義的兩個類之一。

算法

 

感知器及其在Python中的實現

 

感知器原理圖

由于感知器是二元類器(0/1),我們可以將它們的計算定義如下:

 

感知器及其在Python中的實現

 

讓我們回想一下,兩個長度為n的向量的點積由下式給出:

 

感知器及其在Python中的實現

 

函數f(x)= b + w.x是權重和特征向量的線性組合。 因此,感知器是線性分類器-一種使用線性預測器函數進行預測的算法。

權重表示x中每個特征xᵢ 對機器學習模型行為的有效性。特征xᵢ的權重wᵢ越高,對輸出的影響就越大。偏差“ b”類似于線性方程式中的截距,它是一個常數,可以幫助機器學習模型以最適合數據的方式進行調整。偏差項假設虛擬輸入特征系數x₀= 1。

可以使用以下算法訓練模型:

 

感知器及其在Python中的實現

 

Python實現

我們考慮用于實現感知器的機器學習數據集是鳶尾花數據集。這個數據集包含描述花的4個特征,并將它們歸類為屬于3個類中的一個。我們剝離了屬于類' Iris-virginica '的數據集的最后50行,只使用了兩個類' Iris-setosa '和' Iris-versicolor ',因為這些類是線性可分的,算法通過最終找到最優權重來收斂到局部最小值。

 

  1. import numpy as np 
  2. import pandas as pd 
  3. import matplotlib.pyplot as plt 
  4. def load_data(): 
  5.     URL_='https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' 
  6.     data = pd.read_csv(URL_, header = None) 
  7.     print(data) 
  8.      
  9.     # make the dataset linearly separable 
  10.     data = data[:100] 
  11.     data[4] = np.where(data.iloc[:, -1]=='Iris-setosa', 0, 1) 
  12.     data = np.asmatrix(data, dtype = 'float64'
  13.     return data 
  14. data = load_data() 

 

感知器及其在Python中的實現

 

 

將具有兩個特征的數據集可視化,我們可以看到,通過在它們之間畫一條直線,可以清楚地分隔數據集。

我們的目標是編寫一個算法來找到這條線并正確地對所有這些數據點進行分類。

 

  1. plt.scatter(np.array(data[:50,0]), np.array(data[:50,2]), marker='o', label='setosa'
  2. plt.scatter(np.array(data[50:,0]), np.array(data[50:,2]), marker='x', label='versicolor'
  3. plt.xlabel('petal length'
  4. plt.ylabel('sepal length'
  5. plt.legend() 
  6. plt.show() 

 

 

感知器及其在Python中的實現

 

 

感知器及其在Python中的實現

 

現在我們實現上面提到的算法,看看它是如何工作的。我們有4個特征,因此每個特征有4個權重。請記住,我們定義了一個偏置項w₀,假設x₀= 1,使其總共具有5個權重。

我們將迭代次數定義為10。這是超參數之一。在每次迭代時,算法都會為所有數據點計算類別(0或1),并隨著每次錯誤分類更新權重。

如果樣本分類錯誤,則權值將由向相反方向移動的增量更新。因此,如果再次對樣本進行分類,結果就會“錯誤較少”。我們將任何label≤0歸類為“0”(Iris-setosa),其它歸類為“1”(Iris-versicolor)。

 

  1. def perceptron(data, num_iter): 
  2.     features = data[:, :-1] 
  3.     labels = data[:, -1] 
  4.      
  5.     # set weights to zero 
  6.     w = np.zeros(shape=(1, features.shape[1]+1)) 
  7.      
  8.     misclassified_ = []  
  9.    
  10.     for epoch in range(num_iter): 
  11.         misclassified = 0 
  12.         for x, label in zip(features, labels): 
  13.             x = np.insert(x,0,1) 
  14.             y = np.dot(w, x.transpose()) 
  15.             target = 1.0 if (y > 0) else 0.0 
  16.              
  17.             delta = (label.item(0,0) - target) 
  18.              
  19.             if(delta): # misclassified 
  20.                 misclassified += 1 
  21.                 w += (delta * x) 
  22.          
  23.         misclassified_.append(misclassified) 
  24.     return (w, misclassified_) 
  25.               
  26. num_iter = 10 
  27. w, misclassified_ = perceptron(data, num_iter) 

 

 

感知器及其在Python中的實現

 

現在,讓我們繪制每次迭代中分類錯誤的樣本數。我們可以看到該算法在第4次迭代中收斂。也就是說,所有樣本在第4次通過數據時都已正確分類。

感知器的一個特性是,如果數據集是線性可分離的,那么該算法一定會收斂!

 

  1. epochs = np.arange(1, num_iter+1) 
  2. plt.plot(epochs, misclassified_) 
  3. plt.xlabel('iterations'
  4. plt.ylabel('misclassified'
  5. plt.show() 

 

 

感知器及其在Python中的實現

 

局限性

  1. 僅當數據集可線性分離時,單層感知器才有效。
  2. 該算法僅用于二元分類問題。但是,我們可以通過在每個類中引入一個感知器來擴展算法以解決多類分類問題。

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2020-09-08 13:02:00

Python神經網絡感知器

2021-01-07 10:33:26

Python感知器機器學習

2021-02-20 08:42:37

Python感知器機器學習

2022-09-11 15:02:22

機器學習算法感知器

2010-08-20 12:01:02

SNMP管理框架

2011-12-15 01:11:07

ibmdw

2020-11-13 12:52:35

機器學習生產產品

2009-06-04 20:36:03

CheckStyle的Eclipse中的集成

2023-10-11 22:37:44

測試左移服務器

2014-09-30 09:20:13

SDN openflow NFV

2018-07-20 05:44:33

藍牙5物聯網通信

2022-03-24 10:23:51

時間輪方法任務

2017-05-24 09:43:42

2023-12-26 08:22:30

光纖綜合布線

2020-05-13 15:10:04

矩陣乘法深度學習人工智能-

2023-05-07 07:56:53

Python方式

2022-11-03 15:22:15

數據結構Python

2022-09-05 15:18:23

HDF單鏈表嵌入式系統

2023-03-02 08:26:36

RedisAVL紅黑樹

2017-09-01 15:49:41

Raft算法CMQ
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91视频网| 亚洲欧美中文日韩在线v日本 | 中文字幕一区二区三区四区五区 | 一区影院 | 成人做爰9片免费看网站 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 久久av网| 亚洲视频二区 | 欧美二级| 国产精品久久久乱弄 | 国产在视频一区二区三区吞精 | 看羞羞视频免费 | 欧美一区二区成人 | 在线国产一区二区三区 | 国产精品视频不卡 | 国产精品视频久久 | 国产精品亚洲视频 | 国产视频中文字幕 | 国产av毛片 | 日本一道本视频 | 一区二区久久 | 日韩三级一区 | 国产精品久久久精品 | 午夜欧美 | 亚洲v日韩v综合v精品v | 久草在线青青草 | 国产亚洲精品综合一区 | 91久久精品国产免费一区 | 九九免费在线视频 | 免费在线看黄 | 欧美一区二区三区精品免费 | 一区二区在线 | 久久久久久亚洲 | 国产免费av网 | 国产99久久 | 日本电影韩国电影免费观看 | 亚洲精选一区二区 | 精品久久久久久国产 | 国产91在线播放 | 日韩欧美在线一区 | 9久久精品 |