1. 程式人生 > >主成分分析的課堂小結(2)

主成分分析的課堂小結(2)

前面所說的都是隻有二位的資料,現在我們把問題普遍化,將高維資料微量低維資料對映的問題。
假設樣本X的數量有m個,特徵數目有k個,也就是m*k大小的樣本,希望降維之後變成m*n,也就是說,降維到n維的空間內。簡單地說,我們需要找前n個主成分。

用矩陣表示如下:
這裡寫圖片描述

下面用程式碼封裝一個降維工具:

class PCA:
    def __init__(self, n_components):
        '''initiate PCA'''
        assert n_cimponents >= 1, "n_components must be valid"
        self.n_components = n_components
        self.components_ = None
def fit(self, X, eta=0.01, n_iters=1e4): '''get first n pca of data X''' assert self.n_components <= X.shape[1],\ '''n_components must not be greater than the feature number of X''' def demean(X): return X-np.mean(X,axis=0) def f(w,X): '''cost function'''
return np.sum(X.dot(w)**2)/len(X) def df(w,X): '''derived function''' return X.T.dot(X.dot(w))*2./len(X) def direction(w): '''turn w to unit vector''' return w/np.linalg.norm(w) def first_component(X, initial_w, eta=0.01
, n_iters=1e4,epsilon=1e-8)
:
w = direction(initial_w) cur_iter=0 while cur_iter<n_iters: gradient=df(w,X) last_w = w w = w+eta*gradient w = direction(w) if (abs(f(w,X)-f(last_w,X))<epsilon): break cur_iter+=1 return w X_pca = demean(X) self.components_ = np.empty(shape=(self.n_components,X.shape[1]))#initiate an empty w matix (n,m) for i in range(self.n_components): initial_w = np.random.random(X_pca.shape[1]) w = first_component(X_pca,initial_w, eta, n_iters) self.components_[i,:] = w #put w in w matrix X_pca = X_pca - X_pca.dot(w).reshape(-1,1)*w return self def transform(self, X): assert X.shape[1]==self.components_.shape[1] return X.dot(self.components_.T) def inverse_transform(self,X): assert X.shape[1]==self.components_.shape[0] returnX.dot(self.components_) def __repr__(self): return "PCA(n_components=%d)"%self.n_components

相關推薦

成分分析課堂小結(2)

前面所說的都是隻有二位的資料,現在我們把問題普遍化,將高維資料微量低維資料對映的問題。 假設樣本X的數量有m個,特徵數目有k個,也就是m*k大小的樣本,希望降維之後變成m*n,也就是說,降維到n維的空間內。簡單地說,我們需要找前n個主成分。 用矩陣表示如下:

機器學習(十四)——協同過濾的ALS演算法(2)、成分分析

Kendall秩相關係數(Kendall rank correlation coefficient) 對於秩變數對(xi,yi),(xj,yj): (xi−xj)(yi−yj)⎧⎩⎨>0,=0,<0,concordantneither con

【機器學習算法-python實現】PCA 成分分析、降維

pre gre text iss 主成分分析 int 找到 nts 導入 1.背景 PCA(Principal Component Analysis),PAC的作用主要是減少數據集的維度,然後挑選出基本的特征。 PCA的主要思想是移動坐標軸,找

我的R之路:成分分析

log -1 plot code style 9.png ngs alt 顯示 主成分分析是利用降維的方法,在損失很少信息量很少的前提下 X1 X2 X3 X4 X5 X6 X7 X8 1 90342 52

【機器學習】成分分析PCA(Principal components analysis)

大小 限制 總結 情況 pca 空間 會有 ges nal 1. 問題 真實的訓練數據總是存在各種各樣的問題:  1、 比如拿到一個汽車的樣本,裏面既有以“千米/每小時”度量的最大速度特征,也有“英裏/小時”的最大速度特征,

成分分析(PCA)原理詳解(轉載)

增加 信息 什麽 之前 repl 神奇 cto gmail 協方差 一、PCA簡介 1. 相關背景 上完陳恩紅老師的《機器學習與知識發現》和季海波老師的《矩陣代數》兩門課之後,頗有體會。最近在做主成分分析和奇異值分解方面的項目,所以記錄一下心得體會。

解釋一下核成分分析(Kernel Principal Component Analysis, KPCA)的公式推導過程(轉載)

線性不可分 itl 專註 out center forest 測試 重要 原因 KPCA,中文名稱”核主成分分析“,是對PCA算法的非線性擴展,言外之意,PCA是線性的,其對於非線性數據往往顯得無能為力,例如,不同人之間的人臉圖像,肯定存在非線性關系,自己做的基於ORL數據

PCA (成分分析)詳解 (寫給初學者) 結合matlab(轉載)

整數 變量 行為 保持 sum osc 入參 函數 data 一、簡介 PCA(Principal Components Analysis)即主成分分析,是圖像處理中經常用到的降維方法,大家知道,我們在處理有關數字圖像處理方面的問題時,比如經常用的圖像的查詢

PCA成分分析Python實現

more 公式 最大 最重要的 例如 好的 mina details args 作者:拾毅者 出處:http://blog.csdn.net/Dream_angel_Z/article/details/50760130 Github源代碼:https

機器學習之PCA成分分析

ping app 最大 們的 理解 style 避免 -m size 前言 以下內容是個人學習之後的感悟,轉載請註明出處~ 簡介   在用統計分析方法研究多變量的課題時,變量個數太多就會增加課題的復雜性。人們自然希望變量個數較少而得到的 信息較

chapter02 PCA成分分析在手寫數字識別分類的應用

git 性能 .cn its nts line hive 基礎上 存儲 #coding=utf8 # 導入numpy工具包。 import numpy as np # 導入pandas用於數據分析。 import pandas as pd from sklearn.me

R語言-成分分析

方法 var warning 參數 使用 with pro null 圖形 1.PCA 使用場景:主成分分析是一種數據降維,可以將大量的相關變量轉換成一組很少的不相關的變量,這些無關變量稱為主成分   步驟: 數據預處理(保證數據中沒有缺失值) 選擇因子模型(判斷是PCA

(數據科學學習手劄20)成分分析原理推導&Python自編函數實現

encoding 處理 enter png ces pen pos 資料 font 主成分分析(principal component analysis,簡稱PCA)是一種經典且簡單的機器學習算法,其主要目的是用較少的變量去解釋原來資料中的大部分變異,期望能將現有的眾多相關

【Coursera】成分分析

同時 什麽 求解 部分 div 希望 之間 二維 應該 一、問題 主方向的概念是什麽?為什麽降低維度的方法是使方差最大化? 假設某兩個特征之間成線性關系,在二維平面上的表示就是數據點呈線性分布,那麽可以通過將數據在主方向上進行投影,得到一個一維的數據,這個一維的數據保留了

機器學習之路:python 特征降維 成分分析 PCA

repo nts total python learning bsp ota spa 像素 python3 學習api使用 主成分分析方法實現降低維度 使用了網絡上的數據集,我已經下載到了本地,可以去我的git上參考 git:https://github.com/lin

【轉載】成分分析法(PCA)

差異 投影 3D 方式 分享 alt 訓練 矩陣 9.png https://www.jisilu.cn/question/252942 進行維數約減(Dimensionality Reduction),目前最常用的算法是主成分分析法 (Principal Componet

成分分析和因子分析(未完成)

svd分解 主成分分析 http src inf 因子分析 分解 spa span 並且SVD分解也適用於一般的矩陣。 主成分分析和因子分析(未完成)

[python機器學習及實踐(6)]Sklearn實現成分分析(PCA)

相關性 hit 變量 gray tran total 空間 mach show 1.PCA原理 主成分分析(Principal Component Analysis,PCA), 是一種統計方法。通過正交變換將一組可能存在相關性的變量轉換為一組線性不相關的變量,轉換後的這組

【Python】使用Python進行成分分析

參數 and 們的 分布 dom 如果 處理動作 數量 component 使用sklearn庫中的PCA類進行主成分分析。 導入要用到的庫,還沒有的直接pip安裝就好了。 from sklearn.decomposition import PCA import numpy

對圖像進行成分分析(PCV.tools.pca.pca)

div lis 完成 lose 投影 color axis 分類 排序 1 引言   1.1 維度災難     分類為例:如最近鄰分類方法(基本思想:以最近的格子投票分類)     問題:當數據維度增大,分類空間爆炸增長。如圖1所示,