python中PCA的處理過程
1、輸入矩陣歸一化處理。
2、計算樣本協方差矩陣。
3、求解協方差矩陣指定的最大特徵值對應特徵向量。
4、確定轉換矩陣,求解降維資料。
例項
#/usr/nom/env python # _*_coding:utf-8_*_ # @Time :2021/9/3 10:04 # @Author :A bigfish # @FileName :maindemo13.py # @Software :PyCharm import matplotlib.pyplot as plt import numpy as np from pylab import * # 首先匯入資料,此部分為從儲存列表或單元中讀取分析資料 def loadDataSet(filename, delim='t'): #此處的't'表示不同變數間的分隔符,t表示tab鍵鍵入的空格 fr = open(filename) stringArr = [line.strip().split(delim) for line in fr.readlines()] dataArr = [list(map(float, line)) for line in stringArr] return np.mat(dataArr) # 定義pca分析函式 def pca(dataset, topNfeat = 99999): #topNfeat最大特徵值數目,通常不用設定,因為後續要進行視覺化分析 meanVals = np.mean(dataset, axis=0) #求均值 meanRemoved = dataset - meanVals #預處理 covMat = np.cov(meanRemoved, rowvar=0) #求解輸入資料協方差矩陣 eigVals, eigVects = np.linalg.eig(np.mat(covMat)) #求解特徵值,特徵向量 eigVaInd = np.argsort(eigVals) #對特徵值進行排序處理,預設為升序 eigVaInd = eigVaInd[-1:-(topNfeat):-1] #根據指定數目進行逆序處理 redEigVects = eigVects[:,eigVaInd] #選取對應特徵向量 lowDataMat = meanRemoved * redEigVects #資料降維X*P recontMat = (lowDataMat * redEigVects.T) + meanVals #c處理進行了資料重構,非必須選項 return lowDataMat, recontMat, eigVals #返回資料 # 定義特值值繪製函式 def plotEig(dataset, numFeat=20): mpl.rcParams['font.sans-serif'] = ['Times NewRoman'] sumData = np.zeros((1, numFeat)) dataset = dataset / sum(dataset) for i in range(numFeat): sumData[0, i] = sum(dataset[0:i]) X = np.linspace(1, numFeat, numFeat) fig = plt.figure() ax = fig.add_subplot(211) ax.plot(X, (sumData*100).T, 'r-+') mpl.rcParams['font.sans-serif'] = ['SimHei'] plt.ylabel('累計方差百分比') ax2 = fig.add_subplot(212) ax2.plot(X.T, (dataset[0:numFeat].T)*100, 'b-*') plt.xlabel('主成分數') plt.ylabel('方差百分比') plt.show() # 定義原始資料及第一主成分繪製函式 def plotData(OrigData, recData): import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ax.scatter(OrigData[:,0].flatten().A[0], OrigData[:, 1].flatten().A[0], c='blue',marker='^', s=90) ax.scatter(recData[:, 0].flatten().A[0], recData[:, 1].flatten().A[0], c='red', marker='o',s=90) plt.show()
以上就是python中PCA的處理過程,希望對大家有所幫助。更多Python學習指路:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4606/viewspace-2827917/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Nucleus中斷處理過程!!!!
- DOM在Ahooks中的處理過程Hook
- MYSQL匯入中斷處理過程MySql
- OGG 配置過程中的錯誤處理
- oracle處理SQL的過程OracleSQL
- ovm安裝過程及中斷處理
- 異常處理過程
- SQL語句的處理過程SQL
- 分散裝運處理的過程
- Linux 核心處理中斷全過程解析Linux
- 如何處理六西格瑪過程中遇到的問題?
- DML 語句處理過程
- SQL語句的處理過程修正SQL
- OnWndMsg函式的處理過程函式
- 【故障處理】一次RAC故障處理過程
- jquery的ajax傳遞資料過程中的資料處理jQuery
- 資料庫變慢的處理過程資料庫
- 【原始碼】Redis命令處理過程原始碼Redis
- 某次BW 異常處理過程
- ora-14452處理過程
- HSG80故障處理過程
- ora-04031處理過程
- hibernate如何處理儲存過程中的複雜邏輯儲存過程
- IMP過程中報ORA-00907錯誤的處理
- oracle 的DML命令的詳細處理過程Oracle
- [MySQL光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- 一次壞塊的處理過程(一)
- 一次壞塊的處理過程(二)
- MySQL儲存過程的異常處理方法MySql儲存過程
- fastHttp服務端處理請求的過程ASTHTTP服務端
- Flink流處理過程的部分原理分析
- GC析構物件和列表的處理過程GC物件
- undo表空間損壞的處理過程
- 一次壞塊的處理過程 [轉]
- Library cache pin問題的處理過程
- [zt]Logical standby同步故障的處理過程
- 記一次linux主機中病毒處理過程Linux
- oracle儲存過程中單引號及字串拼接處理Oracle儲存過程字串