[數學模型]主成分分析法python實現

def pca(dataMat, topNfeat=9999999):            #數據矩陣, 輸出前topNfeat個feat
    meanVals = mean(dataMat, axis=0)           # 計算平均值
    meanRemoved = dataMat - meanVals 
    covMat = cov(meanRemoved, rowvar=0)        #計算協方差矩陣
    eigVals,eigVects = linalg.eig(mat(covMat)) #特徵值,
    eigValInd = argsort(eigVals)               #排序, 找出特徵值大的. 其實就是與其他的變化最不相符
    eigValInd = eigValInd[:-(topNfeat+1):-1]   #反轉
    redEigVects = eigVects[:,eigValInd]        #
    lowDDataMat = meanRemoved * redEigVects    #映射
    reconMat = (lowDDataMat * redEigVects.T) + meanVals
    return lowDDataMat, reconMat

主成分分析法的數學原理我們可以簡單地瞭解一下就可以了: 找到變化最大的方向作爲新的feature

若想從程序的到的結果, 推斷出這樣劃分的意義, redEigVects 非常關鍵, 它給出了一個映射關係



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章