中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

?Numpy中怎么實現PCA

發布時間:2021-12-16 10:38:11 來源:億速云 閱讀:150 作者:iii 欄目:云計算

本篇內容主要講解“Numpy中怎么實現PCA”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Numpy中怎么實現PCA”吧!

Numpy中實現PCA

from numpy import *

'''
10.235186	11.321997
10.122339	11.810993
9.190236	8.904943
9.306371	9.847394
8.330131	8.340352
10.152785	10.123532
10.408540	10.821986
...
...
'''
def loadDataSet(fileName, delim='\t'):
    fr = open(fileName)
    stringArr = [line.strip().split(delim) for line in fr.readlines()]
    datArr = [map(float,line) for line in stringArr]
    return mat(datArr)

def pca(dataMat, topNfeat=9999999):
    meanVals = mean(dataMat, axis=0)                    #計算列均值
    print meanVals                                      # [[ 9.06393644  9.09600218]]
    print '======'
    meanRemoved = dataMat - meanVals #remove mean       # 每一列都減去均值
    covMat = cov(meanRemoved, rowvar=0)                 # 計算新矩陣(減去均值)協方差
    print covMat                                        # [
                                                            [ 1.05198368  1.1246314 ]
                                                            [ 1.1246314   2.21166499]
                                                          ]
                                                          
                                                        #協方差
    print '======'
    eigVals,eigVects = linalg.eig(mat(covMat))          #計算協方差矩陣的特征值和特征向量
    print eigVals                                       # [ 0.36651371  2.89713496]
    print '======'
    print eigVects                                      #  [
                                                            [-0.85389096 -0.52045195]
                                                            [ 0.52045195 -0.85389096]
                                                           ]  
    print '======'
    eigValInd = argsort(eigVals)                        #按照特征值從大到小排序。選擇topN
    eigValInd = eigValInd[:-(topNfeat+1):-1]  
    redEigVects = eigVects[:,eigValInd]               
    print redEigVects
    print '======'                                      #[
                                                            [-0.52045195]
                                                            [-0.85389096]
                                                         ]
    lowDDataMat = meanRemoved * redEigVects             # N x 2  * 2 x 1 ==> N x 1 
                                                          即把N x 2的矩陣轉化成N x 1 的矩陣,維度降到1  
    reconMat = (lowDDataMat * redEigVects.T) + meanVals
    return lowDDataMat, reconMat

均值: mean(X) = (x0 + x1 + ... + xn) / n

標準差:std = Math.sqrt([x0 - mean(x)]^2/(n-1),2)

方差:var=[x0 - mean(x)]^2/(n-1)

比如兩個集合[0,8,12,20]、[8,9,11,12] 均值都是10.但是兩個集合的差別很大。計算兩個標準差,前者是8.3和后者是1.8.

顯示后者比較集中。標準差描述了數據的“散布度”。之所以除以n-1而不是n。是因為能使我們以較小的樣本更好的逼近總體的標準差。即“無偏估計”

為什么需要協方差?

標準差和方差一般是用來描述一維的數據。但是現實生活中,我們常常遇到含有二維數據的數據集。最簡單的是大家上學免不了的統計多個學科的考試成績。多維數據之間的關系。協方差就是這樣一種度量兩個隨機變量關系的統計量

var(X) = {Math.pow(xi-mean(X),2)}/(n-1) = {xi-mean(X)}{xi-mean(X)}/(n-1)

仿照方差的定義:

cov(X,Y)= {xi-mean(X)}{yi-mean(Y)}/(n-1)

來度量各個維度偏離其均值的程度。

協方差結果的意義:

如果是正值,則說明兩者是正相關,如果結果是負值,則說明兩者是負相關。如果是0,表示兩者沒有關聯,相互獨立。

多維協方差:矩陣來表示

    cov(x,x) cov(x,y) cov(x,z)

C=cov(y,x) cov(y,y) cov(y,z)      ===> 可見協方差矩陣是一個對稱矩陣,而且對角線是各個維度的方差。 是3*3

    cov(z,x) cov(z,y) cov(z,z)

到此,相信大家對“Numpy中怎么實現PCA”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

pca
AI

景东| 花垣县| 怀仁县| 福泉市| 鸡西市| 运城市| 柞水县| 日照市| 哈尔滨市| 牟定县| 外汇| 连城县| 新郑市| 桃源县| 鄂尔多斯市| 乡城县| 邵阳县| 琼中| 聂拉木县| 永仁县| 萨迦县| 武穴市| 天柱县| 邢台市| 金平| 贺州市| 锡林浩特市| 余姚市| 新源县| 涿州市| 宣汉县| 尤溪县| 凌源市| 沙河市| 德化县| 甘谷县| 青州市| 景东| 邹平县| 旬邑县| 新巴尔虎左旗|