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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DOM在Ahooks中的處理過程Hook
- Linux 核心處理中斷全過程解析Linux
- 如何處理六西格瑪過程中遇到的問題?
- Flink流處理過程的部分原理分析
- 【原始碼】Redis命令處理過程原始碼Redis
- [MySQL光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- 記一次linux主機中病毒處理過程Linux
- 處理python中的訊號Python
- GC析構物件和列表的處理過程GC物件
- 一次壞塊的處理過程(一)
- 一次壞塊的處理過程(二)
- 【Tomcat】Tomat 處理請求的過程(圖解)Tomcat圖解
- MySQL儲存過程的異常處理方法MySql儲存過程
- fastHttp服務端處理請求的過程ASTHTTP服務端
- Ceph pg unfound處理過程詳解
- 大資料的處理是怎樣的過程大資料
- nacos2.3 密碼驗證的處理過程密碼
- Linux伺服器被入侵後的處理過程Linux伺服器
- npm install過程失敗的幾種處理方法NPM
- 記一次PMML檔案的處理過程
- nginx 處理客戶端請求的完整過程Nginx客戶端
- (四)SpringBoot啟動過程的分析-預處理ApplicationContextSpring BootAPPContext
- 關於Python中的日期處理Python
- 大資料處理過程是怎樣大資料
- python+selenium 自動化過程中遇到的元素不可見時間以及webelement不可見的處理方法...PythonWeb
- Nginx圖片下載不完整的處理過程Nginx
- 流處理器與其他部件協同工作的過程
- 【數學】主成分分析(PCA)的詳細深度推導過程PCA
- python中try語句的工作過程Python
- python異常處理中finally的作用Python
- 實時流處理與分散式儲存過程中對檔案的操作分散式儲存過程
- SpringMVC請求處理過程原始碼簡析SpringMVC原始碼
- Linux Yum 安裝失敗處理過程整理Linux
- zookeeper原始碼 — 五、處理寫請求過程原始碼
- 記一次ceph pg unfound處理過程
- 物件轉json字串的過程中對value為null的值的一些處理物件JSON字串Null
- 記一次Nodejs安全工單的處理過程_20171226NodeJS
- 一起ORA-00028案例的處理過程