PCA降維python實現
#coding=utf-8
from numpy import *
'''通過方差的百分比來計算將資料降到多少維是比較合適的,
函式傳入的引數是特徵值和百分比percentage,返回需要降到的維度數num'''
def eigValPct(eigVals,percentage):
sortArray=sort(eigVals) #使用numpy中的sort()對特徵值按照從小到大排序
sortArray=sortArray[-1::-1] #特徵值從大到小排序
arraySum=sum(sortArray) #資料全部的方差arraySum
tempSum=0
num=0
for i in sortArray:
tempSum+=i
num+=1
if tempSum>=arraySum*percentage:
return num
'''pca函式有兩個引數,其中dataMat是已經轉換成矩陣matrix形式的資料集,列表示特徵;
其中的percentage表示取前多少個特徵需要達到的方差佔比,預設為0.9'''
def pca(dataMat,percentage=0.9):
meanVals=mean(dataMat,axis=0) #對每一列求平均值,因為協方差的計算中需要減去均值
meanRemoved=dataMat-meanVals
covMat=cov(meanRemoved,rowvar=0) #cov()計算方差
eigVals,eigVects=linalg.eig(mat(covMat)) #利用numpy中尋找特徵值和特徵向量的模組linalg中的eig()方法
k=eigValPct(eigVals,percentage) #要達到方差的百分比percentage,需要前k個向量
eigValInd=argsort(eigVals) #對特徵值eigVals從小到大排序
eigValInd=eigValInd[:-(k+1 ):-1] #從排好序的特徵值,從後往前取k個,這樣就實現了特徵值的從大到小排列
redEigVects=eigVects[:,eigValInd] #返回排序後特徵值對應的特徵向量redEigVects(主成分)
lowDDataMat=meanRemoved*redEigVects #將原始資料投影到主成分上得到新的低維資料lowDDataMat
reconMat=(lowDDataMat*redEigVects.T)+meanVals #得到重構資料reconMat
return lowDDataMat,reconMat
def get_K(dataMat,percentage):
meanVals = mean(dataMat, axis=0) # 對每一列求平均值,因為協方差的計算中需要減去均值
meanRemoved = dataMat - meanVals
covMat = cov(meanRemoved, rowvar=0) # cov()計算方差
eigVals, eigVects = linalg.eig(mat(covMat)) # 利用numpy中尋找特徵值和特徵向量的模組linalg中的eig()方法
k = eigValPct(eigVals, percentage) # 要達到方差的百分比percentage,需要前k個向量
return k
sklearn內的PCA模組
from sklearn.decomposition import PCA
k = pca.get_K(x_train,0.99)
PCA = PCA(k,copy=True,whiten = True)
x_train = PCA.fit_transform(x_train)
x_test = PCA.transform(x_test)
PCA原理:
轉自:https://www.cnblogs.com/dengdan890730/p/5495078.html
PCA, Principle Component Analysis, 主成份分析, 是使用最廣泛的降維演算法.
……
(關於PCA的演算法步驟和應用場景隨便一搜就能找到了, 所以這裡就不說了. )
假如你要處理一個數據集, 資料集中的每條記錄都是一個dd維列向量. 但是這個dd太大了, 所以你希望把資料維度給降下來, 既可以去除一些冗餘資訊, 又可以降低處理資料時消耗的計算資源(用computation budget 來描述可能更形象).
用稍微正式點的語言描述:
已知:一個數據集DD, 記錄(或者樣本, 或input pattern)xi∈Dxi∈D 是dd維列向量.
目標:將每個x∈Dx∈D 對映到另一個pp維空間, p
相關推薦
PCA降維python實現
#coding=utf-8 from numpy import * '''通過方差的百分比來計算將資料降到多少維是比較合適的, 函式傳入的引數是特徵值和百分比percentage,返回需要降到的維度數num''' def eigValPct(eigVals,p
PCA降維 python實現
主成分分析,Principal Component Analysis 計算協方差矩陣,由於是hermitian的,所以100%可正交對角化而且特徵值一定非負 求出特徵值特徵向量以後,取特徵值比較大的那幾個方向構成線性空間,把資料投影上去就OK了 補詳細公式推導: http:
PCA降維方法的python實現
參考《機器學習實戰》,使用MNIST資料集 首先給出PCA的演算法 輸入:樣本集 低維空間維數 d‘ 過程: 對所有樣本進行中心化: 計算樣本的協方差矩陣 對協方差矩陣做特徵值分解 取最大的d'個特徵值所對應的特徵向量 輸出:投影矩陣
PCA降維的python實現
#-*- coding:utf-8 -*- from numpy import * import matplotlib.pyplot as plt def pca(data): # 減去均值 m = mean(data,axis=0)
PCA降維的原理、方法、以及python實現。
參考:菜菜的sklearn教學之降維演算法.pdf!! PCA(主成分分析法) 1. PCA(最大化方差定義或者最小化投影誤差定義)是一種無監督演算法,也就是我們不需要標籤也能對資料做降維,這就使得其應用範圍更加廣泛了。那麼PCA的核心思想是什麼呢? 例如D維變數構成的資料集,PCA的目標是將資料投影到維度
matlab實現PCA降維
利用PCA,把二維資料降為一維資料 load ('ex7data1.mat'); %變成一維 K = 1; %對資料歸一化 means = mean(X); X_means = bsxfun(@min
PCA降維以及Kmeans聚類例項----python,sklearn,PCA,Kmeans
PCA 演算法也叫主成分分析(principal components analysis),主要是用於資料降維的。關於降維,可以這樣理解,一組資料有n個feature(客戶年齡,收入,每個月消費額度等
【Python資料探勘課程】七.PCA降維操作及subplot子圖繪製
這篇文章主要介紹四個知識點,也是我那節課講課的內容。 1.PCA降維操作; 2.Python中Sklearn的PCA擴充套件包; 3.Matplotlib的subplot函式繪製子圖; 4.通過Kmean
主成分降維python程式碼實現(承接上一篇)
# coding=utf-8 import pandas as pd import numpy as np from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler data = pd
PCA降維演算法總結以及matlab實現PCA(個人的一點理解)
轉載請宣告出處。by watkins song 兩篇文章各有側重, 對照看效果更加 o(∩∩)o.. PCA的一些基本資料 最近因為最人臉表情識別,提取的gabor特徵太多了,所以需要用PCA進行對提取的特徵進行降維。 本來最早的時候我沒有打算對提取的gabor特徵
MATLAB自帶工具箱實現PCA降維程式碼,著重介紹實現方法
最近專案中需要進行PCA降維,環境是MATLAB,但是在網上找了很多都是介紹PCA原理的,的確介紹的很仔細,但是我是一個工科狗,只是想最快查到用程式碼實現降維的方法而已,網上的對我來說太多了,因此在此做一個總結,出於對知識的 尊重,插兩篇介紹的不錯的PCA 原理文章,只是想實
還在用PCA降維?快學學大牛最愛的t-SNE演算法吧(附Python/R程式碼)
大資料文摘作品編譯:寒小陽、蔣寶尚、Sheila、賴小娟、錢天培假設你有一個包含數百個特徵(變數
關於PCA降維中遇到的python問題小結
由於論文需要,開始逐漸的學習CNN關於文字抽取的問題,由於語言功底不好,所以在學習中難免會有很多函式不會用的情況..... ̄へ ̄ 主要是我自己的原因,但是我更多的把語言當成是一個工具,需要的時候查詢就行~~~~但是這也僅限於搬磚的時候,大多數時候如果要自己寫程式碼,這個還是行不通的。 簡單的說一下在PCA
PCA降維demo
效果 cti 代碼 push jpg per ims whitening get PCA(Principal Components Analysis)主成分分析法是一種常用的減小數據維度的算法。 能力有限在這裏就不做過多的數學分析了,具體原理可參見http://uf
sklearn pca降維
noise .text learn mac crc sigma 參考 clas nts PCA降維 一.原理 這篇文章總結的不錯PCA的數學原理。 PCA主成分分析是將原始數據以線性形式映射到維度互不相關的子空間。主要就是尋找方差最大的不相關維度。數據的最大方差給出了數據的
【資料收集】PCA降維
post hive ron str AD span clas htm logs 重點整理: PCA(Principal Components Analysis)即主成分分析,是圖像處理中經常用到的降維方法 1、原始數據: 假定數據是二維的 x=[2.5, 0.5, 2.2,
機器學習—PCA降維
one 因此 表示 實現 維度 非監督學習 衡量 取出 計算方法 1、基本思想: 主成分分析(Principal components analysis,以下簡稱PCA)是最重要的降維方法之一。在數據壓縮消除冗余和數據噪音消除等領域都有廣泛的應用。 PCA顧名思義,
LDA和PCA降維的原理和區別
除了 思想 樣本 計算方法 相互 進化 strong 繞過 位置 LDA算法的主要優點有: 在降維過程中可以使用類別的先驗知識經驗,而像PCA這樣的無監督學習則無法使用類別先驗知識。 LDA在樣本分類信息依賴均值而不是方差的時候,比PCA之類的算法較優。 LDA算法的
PCA降維原理和作用
降維的作用 ①資料在低維下更容易處理、更容易使用; ②相關特徵,特別是重要特徵更能在資料中明確的顯示出來;如果只有兩維或者三維的話,更便於視覺化展示; ③去除資料噪聲 ④降低演算法開銷 降維通俗點的解釋 一些高維度的資料,比如淘寶交易資料,為便於解釋降維作用,我們在這假設有下單數
機器學習筆記(八):PCA降維演算法
1 - PCA概述 主成份分析,簡稱為PCA,是一種非監督學習演算法,經常被用來進行 資料降維 有損資料壓縮 特徵抽取 資料視覺化 2 - PCA原理詳解 通過計算資料矩陣的協方差矩陣,然後得到協方差矩陣的特徵值特徵向量,選擇特