双月数据生成及其常见算法(二)
算法部分:
數據使用:雙月數據生成及其常見算法(一)_防空洞的倉鼠的博客-CSDN博客? 文章中的數據
(一)最小二乘:
理論部分:
通過矩陣求解方式,來獲取最優參數。具體求解B則為我們所需要的最佳解。X為對應的數據,Y是對應的輸出。?
代碼實現:
其中trainData是對應的數據數據,target則為對應標簽。
#最小二乘算法def MIN2X(self, trainData,target):self.w = np.array((trainData.T*trainData).I*trainData.T*target[:,2:])print("MIN2X更新后的權重為:{}".format(self.w))(二)ML:最大似然估計
理論部分:
最大似然估計是概率論中常常涉及到的一種統計方法。最大似然估計會尋找關于θ的最可能的值,即在所有可能的θ取值中,尋找一個值使這個采樣的“可能性”最大化。
現在,我們的目標就是最大似然函數:。
?最大化對數似然函數,實際上就是最小化平方和誤差函數,以此找到最大似然解。
根據公式推導:最優化解的形式為:
W(ML)? = Rxx.I(N)*Rdx(N)
其中Rxx為自相關矩陣,Rdx則為互相關矩陣。
Rxx(N) = x*x.T? ? ? ? ? ? Rdx(N) = x*d?
通過帶入X以及對應的響應d,則能夠得到該部分數據的ML最優參數解。
代碼部分:
#ML算法def ML(self, TrainData, target):Rxx = TrainData.T * TrainDataRdx = TrainData.T * target[:, 2:]self.w = np.array(Rxx.I*Rdx)print("ML更新后的權重為:{}".format(self.w))(三)MAP:最大后驗估計
理論部分:最大似然估計不同的是,最大后驗估計尋求的是能使后驗概率最大的值。通常是:通過參數的先驗分布結合樣本信息得到參數的后驗分布。
本質上不同于ML估計,MAP估計是有偏估計,ML是無偏估計。
代碼部分:
#MAP算法def MAP(self,TrainData,target):Rxx = TrainData.T*TrainDataRdx = TrainData.T*target[:,2:]self.w = np.array((Rxx+self.lamba*np.eye(len(TrainData.T))).I*Rdx)print("MAP更新后的權重為:{}".format(self.w))(四)SLP:單層感知機
理論部分:通過迭代思想,來對參數的優化,使得求解出一組誤差較小的最優解。
代碼部分:
def SLP(self,trainData,target):ERROR = []allNumbel = len(trainData)for i in range(self.epoch):errorNumbel = 0for x, y in zip(trainData, target):if y[2] != sign(np.dot(self.w.T, x)):errorNumbel = errorNumbel + 1self.w = self.w + self.lr * sign(y[2] - np.dot(self.w.T, x))*xERROR.append(errorNumbel/allNumbel)print("LMS更新后的權重為:{}".format(self.w))return ERROR(五)LMS:
理論部分:通過不斷迭代,尋找一組權值向量,使得預測和期望之間的誤差最小化。進而不斷地優化參數。
E(w?)≤E(?w)
一般方法是不斷迭代使 E(w(i))<E(w(i?1)) ,如此往復直到代價函數足夠小為止。
代碼部分:
# 最小二乘算法def LMS(self, trainData, target):ERROR = []allNumbel = len(trainData)for i in range(self.epoch):errorNumbel = 0for x,y in zip(trainData,target):x = np.squeeze(x.tolist())y = np.squeeze(y.tolist())if y[2] != sign(np.dot(self.w.T, x)):errorNumbel = errorNumbel + 1err = y[2] - x.T * self.wself.w = self.w + self.lr * x * errERROR.append(errorNumbel/allNumbel)print("LMS更新后的權重為:{}".format(self.w))return ERROR結果:
?
?
?
?
?以上為僅討論線型可分情況下的類型,分類和決策平面,以及完成代碼放以下鏈接
雙月數據及其分類算法.zip-機器學習文檔類資源-CSDN下載
?
?
?
總結
以上是生活随笔為你收集整理的双月数据生成及其常见算法(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习__tsv文件写入多余空
- 下一篇: 【练习八 结构体(强化)编程题4. 看电