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 非常關鍵, 它給出了一個映射關係