麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

python實現高斯判別分析算法的例子

2024-09-09 19:03:11
字體:
來源:轉載
供稿:網友

高斯判別分析算法(Gaussian discriminat analysis)

高斯判別算法是一個典型的生成學習算法(關于生成學習算法可以參考我的另外一篇博客)。在這個算法中,我們假設p(x|y)p(x|y)服從多元正態分布。

注:在判別學習算法中,我們假設p(y|x)p(y|x)服從一維正態分布,這個很好類比,因為在模型中輸入數據XX通常是擁有很多維度的,所以對于XX的條件概率建模時要取多維正態分布。

多元正態分布

多元正態分布也叫多元高斯分布,這個分布的兩個參數分別是平均向量μ∈Rnμ∈Rn和一個協方差矩陣∑∈Rn×n∑∈Rn×n

關于協方差矩陣的定義;假設XX是由nn個標量隨機變量組成的列向量,并且μkμk是第kk個元素的期望值,即μk=E(Xk)μk=E(Xk),那么協方差矩陣被定義為

下面是一些二維高斯分布的概率密度圖像:

最右邊的圖像展現的二維高斯分布的均值是零向量(2x1的零向量),協方差矩陣Σ=IΣ=I(2x2的單位矩陣),像這樣以零向量為均值以單位陣為協方差的多維高斯分布稱為標準正態分布,中間的圖像以零向量為均值,Σ=0.6IΣ=0.6I;最右邊的圖像中Σ=2IΣ=2I,觀察發現當ΣΣ越大時,高斯分布越“鋪開”,當ΣΣ越小時,高斯分布越“收縮”。

讓我們看一些其他例子對比發現規律

上圖中展示的三個高斯分布對應的均值均為零向量,協方差矩陣分別對應與下面三個

最左邊的圖像是我們熟悉的標準二維正態分布,然后我們觀察到當我們增加ΣΣ的非主對角元素時,概率密度圖像沿著45°線(x1=x2x1=x2)“收縮”,從對應的等高線輪廓圖可以跟清楚的看到這一點:

通過對比右邊和中間的兩幅圖發現,通過減少主對角元素可以讓概率密度圖像變得“收縮”,不過是在相反的方向上。

高斯判別分析模型

當我們處理輸入特征是連續隨機變量xx時的分類問題時,我們可以使用高斯判別分析模型(GDA),用多元正態分布模型來描述p(x|y)p(x|y),模型的具體數學表達式是這樣的:

通過最大化似然函數ll可以得到上面四個參數的估計值:

我們用圖像直觀的描述一下算法處理的結果:

python的實現demo 如下:

第57的高斯概率密度函數用矩陣運算寫有bug沒跑通,又因為實驗數據只有二維,于是在紙上對上文中矩陣運算公式進行了化簡至最后結果寫在了函數里。如有疑問可以拿出筆來演算一下。

#GDA#author:Xiaolewenimport matplotlib.pyplot as pltfrom numpy import *#Randomly generate two cluster data of Gaussian distributionsmean0=[2,3]cov=mat([[1,0],[0,2]])x0=random.multivariate_normal(mean0,cov,500).T #The first class point which labael equal 0y0=zeros(shape(x0)[1])#print x0,y0mean1=[7,8]cov=mat([[1,0],[0,2]])x1=random.multivariate_normal(mean1,cov,300).Ty1=ones(shape(x1)[1]) #The second class point which label equals 1#print x1,y1x=array([concatenate((x0[0],x1[0])),concatenate((x0[1],x1[1]))])y=array([concatenate((y0,y1))])m=shape(x)[1]#print x,y,m#Caculate the parameters:/phi,/u0,/u1,/Sigmaphi=(1.0/m)*len(y1)#print phiu0=mean(x0,axis=1) #print u0u1=mean(x1,axis=1)#print u1xplot0=x0;xplot1=x1 #save the original data to plot x0=x0.T;x1=x1.T;x=x.T#print x0,x1,xx0_sub_u0=x0-u0x1_sub_u1=x1-u1#print x0_sub_u0#print x1_sub_u1x_sub_u=concatenate([x0_sub_u0,x1_sub_u1])#print x_sub_ux_sub_u=mat(x_sub_u)#print x_sub_usigma=(1.0/m)*(x_sub_u.T*x_sub_u)#print sigma#plot the discriminate boundary ,use the u0_u1's midnormalmidPoint=[(u0[0]+u1[0])/2.0,(u0[1]+u1[1])/2.0]#print midPointk=(u1[1]-u0[1])/(u1[0]-u0[0])#print kx=range(-2,11)y=[(-1.0/k)*(i-midPoint[0])+midPoint[1] for i in x]#plot contour for two gaussian distributionsdef gaussian_2d(x, y, x0, y0, sigmaMatrix): return exp(-0.5*((x-x0)**2+0.5*(y-y0)**2))delta = 0.025xgrid0=arange(-2, 6, delta)ygrid0=arange(-2, 6, delta)xgrid1=arange(3,11,delta)ygrid1=arange(3,11,delta)X0,Y0=meshgrid(xgrid0, ygrid0) #generate the gridX1,Y1=meshgrid(xgrid1,ygrid1)Z0=gaussian_2d(X0,Y0,2,3,cov)Z1=gaussian_2d(X1,Y1,7,8,cov)#plot the figure and add commentsplt.figure(1)plt.clf()plt.plot(xplot0[0],xplot0[1],'ko')plt.plot(xplot1[0],xplot1[1],'gs')plt.plot(u0[0],u0[1],'rx',markersize=20)plt.plot(u1[0],u1[1],'y*',markersize=20)plt.plot(x,y)CS0=plt.contour(X0, Y0, Z0)plt.clabel(CS0, inline=1, fontsize=10)CS1=plt.contour(X1,Y1,Z1)plt.clabel(CS1, inline=1, fontsize=10)plt.title("Gaussian discriminat analysis")plt.xlabel('Feature Dimension (0)')plt.ylabel('Feature Dimension (1)')plt.show(1)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩黄色免费在线观看 | 亚洲一区免费观看 | 视频一区 在线 | 污污短视频 | 日本欧美一区二区三区在线播 | 毛片观看网址 | 国内精品久久久久久久久久 | 香蕉视频1024 | 欧美一级毛片免费观看视频 | 国产免费一区二区三区 | 免费黄色一级网站 | 在线成人www免费观看视频 | 久久久久一区二区三区 | 一级做a爱片久久毛片a高清 | 亚洲第一成av人网站懂色 | 91精品国产福利尤物免费 | 国产一区二区三区四区波多野结衣 | 黄色网址在线视频 | 亚州综合一区 | www亚洲成人 | 国产精品麻豆一区二区三区 | 日本高清黄色片 | 日韩一级网站 | 717影院理论午夜伦八戒秦先生 | 九九黄色 | 欧美城网站地址 | 福利免费在线观看 | 国内一区 | 成人男男视频拍拍拍在线观看 | 九草av| 91麻豆精品国产91久久久点播时间 | 国产日韩在线观看一区 | 精品三级内地国产在线观看 | 久草视频福利在线观看 | 99sesese| 国产精品午夜未成人免费观看 | 国产精品免费一区二区三区都可以 | 久国产精品视频 | 美国黄色毛片女人性生活片 | 精品久久久91 | 福利在线小视频 |