把斷斷續續學習的機器學習方面的東西整理一下,還是需要系統的記錄一下。
線性**定義下面的的函式
ld是乙個函式集合,w是d維度的引數,b是定義在r的標量。所以整個函式就是標量。
當y的值域是的時候,半空間可以定義為:
在於w垂直的超平面上面的部分,資料被標記為正類,當在超平面的下面的話,資料被標記為負類。
=>兩邊同時乘以
假設存在w*
定義
因此:理想線性可分的情況python**實現:
封裝讀取dat檔案如下:
import numpy as np
#去取dat檔案
def readdat(path):
if path.strip() == '':
return ''
fr = open(path.strip())
index = 0
numberoflines = len(fr.readlines())
returnmat = np.zeros((numberoflines, 4), dtype=np.float64)
classlabelvector =
fr = open(path.strip())
for line in fr.readlines():
line = line.strip()
listfromline = line.split('\t')
listinputdata = listfromline[0].strip().split(' ')
returnmat[index,:]=listinputdata
index += 1
return returnmat,classlabelvector
理想線性可分假設下python的實現
def perceptronlearn(matdata, labeldata):
# 設定最大迭代次數
maxiteration = 100000
# 初始向量
w = [0, 0, 0, 0, 0]
# labely
iterationfinish = false
for interationcount in range(maxiteration):
for dataindex in range(len(matdata)):
# 計算向量內積
vect = matdata[dataindex, :]
resulty = vdot(w, extrabiasvect)
if (resulty <= 0):
labely = -1
else:
labely = 1
if (labely != labeldata[dataindex]):
w = w + labeldata[dataindex] * extrabiasvect
break
else:
if (dataindex == (len(matdata) - 1)):
iterationfinish = true
if (iterationfinish == true):
break
return w
機器學習 感知機模型
感知機模型,主要的思想是用乙個函式,通過不斷的調節權值和偏置的數值,將乙個線性可分的集合分類 感知機演算法 fx sign w x b sign 1 x 0,1 x 0 對於最優的w,b的值,採用了損失函式 l w,b sum xi 屬於 m yi w xi b m 為錯誤分類點的集合 感知機學習演...
機器學習 感知機模型
目錄感知機 perceptron 是二類分類的線性分類模型,其輸入為例項的特徵向量,輸出為例項的類別,取 1 和 1 二值.感知機對應於輸入空間 特徵空間 中將例項劃分為正負兩類的分離超平面,屬於判別模型.感知機學習旨在求出將訓練資料進行線性劃分的分離超平面,為此匯入基於誤分類的損失函式,利用梯度下...
機器學習 手寫感知機模型
資料集來自mnist資料集,主要利用numpy裡的matrix矩陣計算。演算法的實現主要在於對引數w和b的求解。演算法的推導過程參考李航 統計學習方法 推導最優化函式然後更新引數的過程。import numpy as np import pandas as pd import time defdat...