python求協(xié)方差函數(shù) python協(xié)方差分析

怎么用python表示出二維高斯分布函數(shù),mu表示均值,sigma表示協(xié)方差矩陣,x表示數(shù)據(jù)點

clear?

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)建站將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。

close?all

%%%%%%%%%%%%%%%%%%%%%%%%%生成實驗數(shù)據(jù)集

rand('state',0)

sigma_matrix1=eye(2);

sigma_matrix2=50*eye(2);

u1=[0,0];

u2=[30,30];

m1=100;

m2=300;%樣本數(shù)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm1數(shù)據(jù)集

Y1=multivrandn(u1,m1,sigma_matrix1);

Y2=multivrandn(u2,m2,sigma_matrix2);

scatter(Y1(:,1),Y1(:,2),'bo')

hold?on

scatter(Y2(:,1),Y2(:,2),'r*')

title('SM1數(shù)據(jù)集')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm2數(shù)據(jù)集

u11=[0,0];

u22=[5,5];

u33=[10,10];

u44=[15,15];

m=600;

sigma_matrix3=2*eye(2);

Y11=multivrandn(u11,m,sigma_matrix3);

Y22=multivrandn(u22,m,sigma_matrix3);

Y33=multivrandn(u33,m,sigma_matrix3);

Y44=multivrandn(u44,m,sigma_matrix3);

figure(2)

scatter(Y11(:,1),Y11(:,2),'bo')

hold?on

scatter(Y22(:,1),Y22(:,2),'r*')

scatter(Y33(:,1),Y33(:,2),'go')

scatter(Y44(:,1),Y44(:,2),'c*')

title('SM2數(shù)據(jù)集')

end

function?Y?=?multivrandn(u,m,sigma_matrix)

%%生成指定均值和協(xié)方差矩陣的高斯數(shù)據(jù)

n=length(u);

c?=?chol(sigma_matrix);

X=randn(m,n);

Y=X*c+ones(m,1)*u;

end

python數(shù)據(jù)分析之主成分分析

主成分分析,又稱PCA,是指將多個變量通過線性變換以后選出較少個重要變量的一種多元統(tǒng)計方法。

主成分分析計算步驟:

1、計算協(xié)方差矩陣

2、求出相應(yīng)的特征值及相應(yīng)的正交化單位向量

3、選擇主成分

4、計算主成分載荷

5、計算主成分得分

Python基礎(chǔ) numpy中的常見函數(shù)有哪些

有些Python小白對numpy中的常見函數(shù)不太了解,今天小編就整理出來分享給大家。

Numpy是Python的一個科學(xué)計算的庫,提供了矩陣運算的功能,其一般與Scipy、matplotlib一起使用。其實,list已經(jīng)提供了類似于矩陣的表示形式,不過numpy為我們提供了更多的函數(shù)。

數(shù)組常用函數(shù)

1.where()按條件返回數(shù)組的索引值

2.take(a,index)從數(shù)組a中按照索引index取值

3.linspace(a,b,N)返回一個在(a,b)范圍內(nèi)均勻分布的數(shù)組,元素個數(shù)為N個

4.a.fill()將數(shù)組的所有元素以指定的值填充

5.diff(a)返回數(shù)組a相鄰元素的差值構(gòu)成的數(shù)組

6.sign(a)返回數(shù)組a的每個元素的正負(fù)符號

7.piecewise(a,[condlist],[funclist])數(shù)組a根據(jù)布爾型條件condlist返回對應(yīng)元素結(jié)果

8.a.argmax(),a.argmin()返回a最大、最小元素的索引

改變數(shù)組維度

a.ravel(),a.flatten():將數(shù)組a展平成一維數(shù)組

a.shape=(m,n),a.reshape(m,n):將數(shù)組a轉(zhuǎn)換成m*n維數(shù)組

a.transpose,a.T轉(zhuǎn)置數(shù)組a

數(shù)組組合

1.hstack((a,b)),concatenate((a,b),axis=1)將數(shù)組a,b沿水平方向組合

2.vstack((a,b)),concatenate((a,b),axis=0)將數(shù)組a,b沿豎直方向組合

3.row_stack((a,b))將數(shù)組a,b按行方向組合

4.column_stack((a,b))將數(shù)組a,b按列方向組合

數(shù)組分割

1.split(a,n,axis=0),vsplit(a,n)將數(shù)組a沿垂直方向分割成n個數(shù)組

2.split(a,n,axis=1),hsplit(a,n)將數(shù)組a沿水平方向分割成n個數(shù)組

數(shù)組修剪和壓縮

1.a.clip(m,n)設(shè)置數(shù)組a的范圍為(m,n),數(shù)組中大于n的元素設(shè)定為n,小于m的元素設(shè)定為m

2.a.compress()返回根據(jù)給定條件篩選后的數(shù)組

數(shù)組屬性

1.a.dtype數(shù)組a的數(shù)據(jù)類型

2.a.shape數(shù)組a的維度

3.a.ndim數(shù)組a的維數(shù)

4.a.size數(shù)組a所含元素的總個數(shù)

5.a.itemsize數(shù)組a的元素在內(nèi)存中所占的字節(jié)數(shù)

6.a.nbytes整個數(shù)組a所占的內(nèi)存空間7.a.astype(int)轉(zhuǎn)換a數(shù)組的類型為int型

數(shù)組計算

1.average(a,weights=v)對數(shù)組a以權(quán)重v進(jìn)行加權(quán)平均

2.mean(a),max(a),min(a),middle(a),var(a),std(a)數(shù)組a的均值、最大值、最小值、中位數(shù)、方差、標(biāo)準(zhǔn)差

3.a.prod()數(shù)組a的所有元素的乘積

4.a.cumprod()數(shù)組a的元素的累積乘積

5.cov(a,b),corrcoef(a,b)數(shù)組a和b的協(xié)方差、相關(guān)系數(shù)

6.a.diagonal()查看矩陣a對角線上的元素7.a.trace()計算矩陣a的跡,即對角線元素之和

以上就是numpy中的常見函數(shù)。更多Python學(xué)習(xí)推薦:PyThon學(xué)習(xí)網(wǎng)教學(xué)中心。

什么是協(xié)方差與相關(guān)系數(shù)?協(xié)方差矩陣如何計算?np.cov函數(shù)

協(xié)方差 (Covariance)在概率論和統(tǒng)計學(xué)中用于衡量兩個變量的總體誤差。而方差是協(xié)方差的一種特殊情況,即當(dāng)兩個變量是相同的情況。

協(xié)方差的計算公式如下所示:

方差的計算公式如下所示:

可以看到協(xié)方差是度量兩個變量的總體誤差,而方差只考慮單變量的離散程度。

如果連個變量相互獨立,則協(xié)方差為零。

則它的協(xié)方差矩陣計算公式為:

我們將該矩陣命名為矩陣A,這個矩陣共有三種屬性,每種屬性有5個變量,我們需要計算學(xué)科與學(xué)科之間的協(xié)方差,綜合在一起就構(gòu)成了協(xié)方差矩陣。

我們將語文、數(shù)學(xué)、英語分別編號為1、2、3,則它們之間的協(xié)方差記為E11、E12、E13、E22、E23、E33,最終該矩陣的協(xié)方差矩陣為:

可以根據(jù)協(xié)方差計算公式進(jìn)行計算:

首先,我們需要得到這三科的平均成績:

然后用矩陣A減去平均成績(三科分別減去各科的均值),得到新的矩陣:

E12的計算公式為:

由于樣本減均值剛剛已經(jīng)計算完成,這里直接進(jìn)行計算:

同理,E13的計算公式為:

根據(jù)Eij=Eji的性質(zhì),得到新的矩陣:

然后除以樣本的個數(shù)5,得到最后的協(xié)方差矩陣:

知道了協(xié)方差矩陣如何計算之后我們來使用numpy內(nèi)置的函數(shù) cov() 來計算協(xié)方差矩陣。假設(shè)有兩個變量 x0 和 x1 ,有三組觀測(0,2)(1,1)和(2,0)。

值得注意的是, np.cov(x) 函數(shù)的默認(rèn)輸入矩陣x每一行代表一個特征,每一列代表一個觀測,所以在進(jìn)行協(xié)方差矩陣計算的時候需要對輸入矩陣進(jìn)行轉(zhuǎn)置,或者將默認(rèn)參數(shù)設(shè)置為False,如 np.cov(x,rowvar=False) 。

輸出:

亦或者:

輸出:

相關(guān)系數(shù)是研究變量之間線性相關(guān)程度的量。

相關(guān)系數(shù)的計算公式如下所示:

可以表示X和Y線性關(guān)系的緊密程度.

參考:

協(xié)方差 - 百度百科

相關(guān)系數(shù) - 百度百科

協(xié)方差矩陣概念

python pca怎么得到主成份

一般步驟來實現(xiàn)PCA算法

(1)零均值化

假如原始數(shù)據(jù)集為矩陣dataMat,dataMat中每一行代表一個樣本,每一列代表同一個特征。零均值化就是求每一列的平均值,然后該列上的所有數(shù)都減去這個均值。也就是說,這里零均值化是對每一個特征而言的,零均值化都,每個特征的均值變成0。實現(xiàn)代碼如下:

[python]?view plain?copy

def?zeroMean(dataMat):

meanVal=np.mean(dataMat,axis=0)?????#按列求均值,即求各個特征的均值

newData=dataMat-meanVal

return?newData,meanVal

函數(shù)中用numpy中的mean方法來求均值,axis=0表示按列求均值。

該函數(shù)返回兩個變量,newData是零均值化后的數(shù)據(jù),meanVal是每個特征的均值,是給后面重構(gòu)數(shù)據(jù)用的。

(2)求協(xié)方差矩陣

[python]?view plain?copy

newData,meanVal=zeroMean(dataMat)

covMat=np.cov(newData,rowvar=0)

numpy中的cov函數(shù)用于求協(xié)方差矩陣,參數(shù)rowvar很重要!若rowvar=0,說明傳入的數(shù)據(jù)一行代表一個樣本,若非0,說明傳入的數(shù)據(jù)一列代表一個樣本。因為newData每一行代表一個樣本,所以將rowvar設(shè)置為0。

covMat即所求的協(xié)方差矩陣。

(3)求特征值、特征矩陣

調(diào)用numpy中的線性代數(shù)模塊linalg中的eig函數(shù),可以直接由covMat求得特征值和特征向量:

[python]?view plain?copy

eigVals,eigVects=np.linalg.eig(np.mat(covMat))

eigVals存放特征值,行向量。

eigVects存放特征向量,每一列帶別一個特征向量。

特征值和特征向量是一一對應(yīng)的

(4)保留主要的成分[即保留值比較大的前n個特征]

第三步得到了特征值向量eigVals,假設(shè)里面有m個特征值,我們可以對其排序,排在前面的n個特征值所對應(yīng)的特征向量就是我們要保留的,它們組成了新的特征空間的一組基n_eigVect。將零均值化后的數(shù)據(jù)乘以n_eigVect就可以得到降維后的數(shù)據(jù)。代碼如下:

[python]?view plain?copy

eigValIndice=np.argsort(eigVals)????????????#對特征值從小到大排序

n_eigValIndice=eigValIndice[-1:-(n+1):-1]???#最大的n個特征值的下標(biāo)

n_eigVect=eigVects[:,n_eigValIndice]????????#最大的n個特征值對應(yīng)的特征向量

lowDDataMat=newData*n_eigVect???????????????#低維特征空間的數(shù)據(jù)

reconMat=(lowDDataMat*n_eigVect.T)+meanVal??#重構(gòu)數(shù)據(jù)

return?lowDDataMat,reconMat

代碼中有幾點要說明一下,首先argsort對特征值是從小到大排序的,那么最大的n個特征值就排在后面,所以eigValIndice[-1:-(n+1):-1]就取出這個n個特征值對應(yīng)的下標(biāo)。【python里面,list[a:b:c]代表從下標(biāo)a開始到b,步長為c?!?/p>

Python3 for循環(huán)求方差函數(shù)問題

def?get_fanc(a):

b,c,d=0,0,0

print(type(a))

e=len(a)

f=sum(a)

b=f/e

for?i?in?a:

c=c+(i-b)

c=c/b

return?c

test?=?[1,2,3]

print(get_fanc(test))

我這邊測試表示沒有問題

網(wǎng)頁名稱:python求協(xié)方差函數(shù) python協(xié)方差分析
文章分享:http://www.muchs.cn/article38/hjespp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、虛擬主機(jī)、微信公眾號定制開發(fā)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)