感知機 統計學習方法習題1

2021-10-01 13:16:33 字數 1932 閱讀 4217

課本p40,例2.1。具體原理可以參考博文:

訓練資料集為:正例項點:原始形式演算法求解:

import numpy as np

import matplotlib.pyplot as plt

p_x = np.array([[3,3], [4,3], [1,1]])

#將正負例項點按不同圖例畫出

y = np.array([1, 1, -1])

plt.figure()

for i in range(len(p_x)):

if y[i] == 1:

plt.plot(p_x[i][0], p_x[i][1], 'ro')

else:

plt.plot(p_x[i][0], p_x[i][1], 'bo')

#初值w = np.array([0, 0])

b = 0

#學習率

delta=1

for k in range(100): #迭代100次,中途可以停止跳出

choice=-1

for i in range(len(p_x)):

if y[i]!= np.sign(np.dot(w, p_x[i]) + b): #異號

choice=i #第i個點不滿足正確分類條件

break

if choice == -1:

break

else:

w = w + delta * y[choice]*p_x[choice]

b = b + delta * y[choice]

print("第%d次迭代:"%(k+1))

對偶形式演算法求解: 

import numpy as np

import matplotlib.pyplot as plt

p_x = np.array([[3,3], [4,3], [1,1]])

y = np.array([1, 1, -1])

# 初值設定

a=np.array([0,0,0])

b=0delta=1

#gram矩陣

g=np.zeros(shape=(3,3))

for i in range(0,3):

for j in range(0,3):

g[i,j]=np.dot(p_x[i], p_x[j])

#迭代for k in range(100): #迭代100次

choice = -1

for i in range(len(p_x)):

if y[i]!=np.sign(sum(a[j]*y[j]*g[j,i] for j in range(0,3))+b): #異號

choice =i #第i個點不滿足正確分類條件

break

else:

choice = -1

if choice == -1:

break

else:

a[i]=a[i]+1

b=b+y[i]

w=sum(np.dot(a[i]*y[i],p_x[i]) for i in range(0,3))

print("w:",w)

print("b:",b)

感知機 統計學習方法

一 感知機適用問題以及它的輸入,輸出,求解方法 1 感知機 perceptron 適用於二類分類問題 該分類問題是線性可分問題 2 感知機模型是線性分類模型 3 感知機的幾何解釋,感知機對應的是乙個超平面 4 輸入 例項的特徵向量 5 輸出 例項的類別,取 1和 1二值 6 求解方法 有監督學習 給...

《統計學習方法》 感知機

最近終於有開始看 統計學習方法 了,畢竟無腦調參確實沒有什麼意義。一方面是作為看書的筆記,一方面作為比部落格或許能起到一點參考作用吧。希望可以日更。由輸入空間到輸出空間的函式 f x si gn w x b f x sign w cdot x b f x s ign w x b 稱為感知機。感知機是...

統計學習方法之感知機

在翻閱知乎時,得知李航所著的 統計學習方法 一書,於是就買了一本,看到csdn上已有大牛都發了相關的部落格,再次贅述就顯得囉嗦了,就直接上乾貨吧,自己用matlab寫的 和一些自己再看書時的小小的理解。感知機是一種二類分類的線性模型模型,是乙個將輸入空間 特徵空間 分成正負兩類的分離超平面。它的更多...