感知機的對偶形式

2021-09-17 01:18:08 字數 1356 閱讀 2690

李航的統計學習方法上寫的不是很詳細,這個部落格寫的還可以。**

自己嘗試把感知機對偶形式的**寫了一下,假設學習率

# -*- coding:utf-8 -*-

import numpy as np # 感知機對偶形式學習演算法demo

data = np.array([[3, 3, 1], [4, 3, 1], [1, 1, -1]]) #生成資料

x_data = data[:, :2]

y_data = data[:, -1]

def getgram(x_data): #計算得到gram矩陣

gram_matrix =

for i in range(x_data.shape[0]):

for j in range(x_data.shape[0]):

gram_matrix = np.array(gram_matrix)

gram_matrix.resize([x_data.shape[0], x_data.shape[0]])

return gram_matrix

#對偶形式的感知機學習演算法

n = np.array([0]*len(x_data))

key = true

while key:

key = false

for i in range(len(x_data)):

x_i = x_data[i, :]

y_i = y_data[i]

s = 0

for j in range(len(x_data)):

s += n[j]*y_data[j]*getgram(x_data)[j][i]+n[j]*y_data[j]

if y_i*s <= 0:

n[i]+=1

key = true

print("n的值:", n) # n中存放了每個樣本點被修改的次數

w_d = 0

b_d = 0

for i in range(len(x_data)): #根據每個樣本點的修改次數計算w_d和b_d的值

w_d += n[i]*y_data[i]*x_data[i]

b_d += n[i]*y_data[i]

print("最終w_d的值:", w_d)

print("最終b_d的值", b_d)

最後的答案和新版統計學習方法給的答案一樣。

感知機學習演算法的對偶形式

感知機學習演算法的對偶形式,演算法2.2參考李航 統計學習方法 書中第二章的演算法 clear all clcx 3,3 4,3 1,1 y 1,1,1 訓練資料集及標記 learnrate 1 學習率 0,1 alpha zeros 1,size x,1 b 0 alpha和b的初值 g x x ...

感知機學習演算法的原始形式和對偶形式

原始形式和對偶形式是從兩個方面去計算梯度下降的問題,兩種方法找誤分點的個數是一樣的,區別在於,找到乙個誤分點時兩者接下來的計算方法 n為訓練集大小,n為特徵數量 1 對偶形式 掃一遍n,計算每條資料在之前被加了幾 ai 次 當 取1時,ai相當於第i組資料的梯度xiyi被加了幾次,找到乙個誤分點後直...

ML 8 感知機演算法 傳統和對偶形式

感知機模型 感知機模型損失函式 感知機模型損失函式的優化方法 感知機模型的演算法 感知機模型的演算法對偶形式 我們知道較早的分類模型 感知機 1957年 是二類分類的線性分類模型,也是後來神經網路和支援向量機的基礎。感知機模型是一種二分類的線性分類器,只能處理線性可分的問題,感知機的模型就是嘗試找到...