協(xié)方差矩陣python實(shí)現(xiàn)

? ? 當(dāng)你有一個(gè)數(shù)據(jù)集,每一條數(shù)據(jù)都M種屬性,然后你想知道M種屬性對數(shù)據(jù)集的影響的時(shí)候。你需要用到協(xié)方差矩陣。

? ? 求協(xié)方差矩陣之前請一定要知道協(xié)方差矩陣是干嘛的,是表示屬性之間關(guān)系的矩陣,協(xié)方差矩陣的規(guī)模只與屬性數(shù)量有關(guān),和數(shù)據(jù)總量無關(guān)。blog.sciencenet.cn/blog-455004-805926.html 這里講的很清楚。

python代碼如下:

class PCA:

def avg(self,data):

avgData = [0]*len(data[0])

for i in range(0,len(data)):

for t in range(0,len(data[i])):

avgData[t] += data[i][t]

for i in range(0,len(avgData)):

avgData[i] = float(avgData[i])/len(data)

return avgData

def getCovMatrix(self,data,avg):

covData = [[0 for i in range(len(data[0]))] for i in range(len(data[0]))]

for i in range(0,len(data[0])):

for t in range(0,len(data[0])):

covData[i][t] = self.getCov(data,i,t,avg)

return covData

def getCov(self,data,col1,col2,avg):

cov = 0;

for i in range(0,len(data)):

cov += (data[i][col1]-avg[col1])*(data[i][col2]-avg[col2])

#print cov/(len(data)-1)

return cov/(len(data)-1)

data = [[-1,-1,1],[-2,-1,4],[-3,-2,-2],[1,1,1],[2,1,2],[3,2,1],[1,2,4]]

example = PCA()

avgdata = example.avg(data)

print example.getCovMatrix(data,avgdata)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容