日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

双月数据生成及其常见算法(二)

發布時間:2024/3/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 双月数据生成及其常见算法(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

算法部分:

數據使用:雙月數據生成及其常見算法(一)_防空洞的倉鼠的博客-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下載

?

?

?

總結

以上是生活随笔為你收集整理的双月数据生成及其常见算法(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。