PCA降維方法的python實現
參考《機器學習實戰》,使用MNIST資料集
首先給出PCA的演算法
輸入:樣本集
低維空間維數 d‘
過程:
- 對所有樣本進行中心化:
- 計算樣本的協方差矩陣
- 對協方差矩陣做特徵值分解
- 取最大的d'個特徵值所對應的特徵向量
輸出:投影矩陣
# -*- coding: utf-8 -*- """ Created on Sun Jul 22 15:38:03 2018 @author: Li Qingquan """ import chainer import matplotlib import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D # with reference to "Machine Learning in Action" def PCA(dataMat, topNfeat=9999999): meanVals = np.mean(dataMat, axis = 0) # calculate mean meanRemoved = dataMat - meanVals # minus mean covMat = np.cov(meanRemoved, rowvar=0) # calculate the covariance matrix eigVals, eigVects = np.linalg.eig(np.mat(covMat)) # calculate eigenvalues # sort eigenvalues eigValInd = np.argsort(eigVals) eigValInd = eigValInd[: -(topNfeat + 1) : -1] redEigVects = eigVects[:, eigValInd] # dimensionality reduction lowDDataMat = meanRemoved * redEigVects reconMat = (lowDDataMat * redEigVects.T) + meanVals return lowDDataMat, reconMat if __name__ == "__main__": train, test = chainer.datasets.get_mnist() img = [] label = [] for i in range(10000): # get numbers 3, 6, 8 if train[i][1] == 3 or train[i][1] == 6 or train[i][1] == 8: img.append(train[i][0]) label.append(train[i][1]) lowDDataMat, reconMat = PCA(np.array(img), 3) # draw fig = plt.figure() axes = fig.add_subplot(111, projection='3d') for i in range(len(label)): if label[i] == 3: axes.scatter(np.array(lowDDataMat[i, 0]), np.array(lowDDataMat[i, 1]), np.array(lowDDataMat[i, 2]), color='red') if label[i] == 6: axes.scatter(np.array(lowDDataMat[i, 0]), np.array(lowDDataMat[i, 1]), np.array(lowDDataMat[i, 2]), color='green') if label[i] == 8: axes.scatter(np.array(lowDDataMat[i, 0]), np.array(lowDDataMat[i, 1]), np.array(lowDDataMat[i, 2]), color='blue') plt.title("PCA") plt.show()
相關推薦
PCA降維的python實現
#-*- coding:utf-8 -*- from numpy import * import matplotlib.pyplot as plt def pca(data): # 減去均值 m = mean(data,axis=0)
PCA降維方法的python實現
參考《機器學習實戰》,使用MNIST資料集 首先給出PCA的演算法 輸入:樣本集 低維空間維數 d‘ 過程: 對所有樣本進行中心化: 計算樣本的協方差矩陣 對協方差矩陣做特徵值分解 取最大的d'個特徵值所對應的特徵向量 輸出:投影矩陣
PCA 降維方法的簡單使用
from sklearn.decomposition import PCA from sklearn.cluster import KMeans import pandas as pd import numpy as np #pca.txt是一個沒有表頭的多維資料,一共有7列,利用pandas讀取
PCA降維方法
PCA (主成分分析)詳解 (寫給初學者) 結合matlab 一、簡介 PCA(Principal Components Analysis)即主成分分析,是影象處理中經常用到的降維方法,大家知道,我們在處理有關數字影象處理方面的問題時,比如經常用的
PCA降維的原理、方法、以及python實現。
參考:菜菜的sklearn教學之降維演算法.pdf!! PCA(主成分分析法) 1. PCA(最大化方差定義或者最小化投影誤差定義)是一種無監督演算法,也就是我們不需要標籤也能對資料做降維,這就使得其應用範圍更加廣泛了。那麼PCA的核心思想是什麼呢? 例如D維變數構成的資料集,PCA的目標是將資料投影到維度
資料降維方法及Python實現
一、資料降維瞭解 1.1、資料降維原理:機器學習領域中所謂的降維就是指採用某種對映方法,將原高維空間中的資料點對映到低維度的空間中。降維的本質是學習一個對映函式 f : x->y,其中x是原始資料點的表達,目前最多使用向量表達形式。 y是資料點對映後的低維向量表達
PCA降維python實現
#coding=utf-8 from numpy import * '''通過方差的百分比來計算將資料降到多少維是比較合適的, 函式傳入的引數是特徵值和百分比percentage,返回需要降到的維度數num''' def eigValPct(eigVals,p
PCA降維 python實現
主成分分析,Principal Component Analysis 計算協方差矩陣,由於是hermitian的,所以100%可正交對角化而且特徵值一定非負 求出特徵值特徵向量以後,取特徵值比較大的那幾個方向構成線性空間,把資料投影上去就OK了 補詳細公式推導: http:
MATLAB自帶工具箱實現PCA降維程式碼,著重介紹實現方法
最近專案中需要進行PCA降維,環境是MATLAB,但是在網上找了很多都是介紹PCA原理的,的確介紹的很仔細,但是我是一個工科狗,只是想最快查到用程式碼實現降維的方法而已,網上的對我來說太多了,因此在此做一個總結,出於對知識的 尊重,插兩篇介紹的不錯的PCA 原理文章,只是想實
matlab實現PCA降維
利用PCA,把二維資料降為一維資料 load ('ex7data1.mat'); %變成一維 K = 1; %對資料歸一化 means = mean(X); X_means = bsxfun(@min
12種降維方法終極指南(含Python程式碼)
你遇到過特徵超過1000個的資料集嗎?超過5萬個的呢?我遇到過。降維是一個非常具有挑戰性的任務,尤其是當你不知道該從哪裡開始的時候。擁有這麼多變數既是一個恩惠——資料量越大,分析結果越可信;也是一種詛咒——你真的會感到一片茫然,無從下手。 面對這麼多特徵,在微觀層面分析每個
PCA降維以及Kmeans聚類例項----python,sklearn,PCA,Kmeans
PCA 演算法也叫主成分分析(principal components analysis),主要是用於資料降維的。關於降維,可以這樣理解,一組資料有n個feature(客戶年齡,收入,每個月消費額度等
降維方法:PCA&SVD
個人覺得關於PCA(主成分分析)和SVD(矩陣奇異值分解)兩篇不錯的部落格:簡單來說:PCA是將高維資料在低維方向上投影從而達到降維的目的,SVD是將矩陣分解為低維矩陣的乘積。兩者都是建立在矩陣的這一基石上,即:Ax=x。1)PCA具體過程如下:假設有一組資料{(xi,yi)
【Python資料探勘課程】七.PCA降維操作及subplot子圖繪製
這篇文章主要介紹四個知識點,也是我那節課講課的內容。 1.PCA降維操作; 2.Python中Sklearn的PCA擴充套件包; 3.Matplotlib的subplot函式繪製子圖; 4.通過Kmean
PCA降維演算法總結以及matlab實現PCA(個人的一點理解)
轉載請宣告出處。by watkins song 兩篇文章各有側重, 對照看效果更加 o(∩∩)o.. PCA的一些基本資料 最近因為最人臉表情識別,提取的gabor特徵太多了,所以需要用PCA進行對提取的特徵進行降維。 本來最早的時候我沒有打算對提取的gabor特徵
還在用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
PCA主成分分析Python實現
more 公式 最大 最重要的 例如 好的 mina details args 作者:拾毅者 出處:http://blog.csdn.net/Dream_angel_Z/article/details/50760130 Github源代碼:https
sklearn pca降維
noise .text learn mac crc sigma 參考 clas nts PCA降維 一.原理 這篇文章總結的不錯PCA的數學原理。 PCA主成分分析是將原始數據以線性形式映射到維度互不相關的子空間。主要就是尋找方差最大的不相關維度。數據的最大方差給出了數據的