本文是個人學習筆記,內容主要基於pca降維模型對手寫體資料影象集進行降維,把原始64維度的數字影象壓縮對映到二維空間,實驗結果表明絕大多數數字之間仍然具有區分性。
在資料表現方面,無法用肉眼觀測超過三個維度的特徵。對於資料維度非常高的資料樣本,通過無監督學習可以對資料進行降維,保留最具有區分性的低維度特徵。在特徵降維的方法中,主成分分析(principal component analysis)是最為經典和實用的特徵降維技術,特別在輔助影象識別方面有突出的表現。
特徵降維形象點說就好比,矩陣中有兩行是線性相關的,經過特徵降維,只會保留其中一行;你要給乙個三維盆栽拍**,你可以從上下左右斜45o
等角度拍二維**,有的角度得到的資訊多,更能表現原物體特徵,但有的角度得到的資訊就少。
利用pca進行特徵選擇時,首先要把原來的的特徵空間做了對映,使得新的對映後的特徵空間資料彼此正交,這樣做就盡可能保留下具備區分性的低維資料特徵。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
digits_train=pd.read_csv('',header=none)
digits_test=pd.read_csv('',header=none)
x_digits=digits_train[np.arange(64)] #從訓練集中分離出特徵和標籤
下面針對digits資料集進行一組對比實驗:(1)用原始64維度的畫素特徵,利用svc對手寫體資料影象進行識別分類;(2)用經過pca壓縮重建後的低維特徵,利用svc對手寫體資料影象進行識別分類。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
digits_train=pd.read_csv('',header=none)
digits_test=pd.read_csv('',header=none)
x_train=digits_train[np.arange(64)] #從訓練集中分離出特徵和標籤
y_train=digits_train[64]
x_test=digits_test[np.arange(64)]
y_test=digits_test[64]
from sklearn.svm import linearsvc
svc=linearsvc()
svc.fit(x_train,y_train)
y_predict=svc.predict(x_test)
estimator=pca(n_components=20) #用pca將原始64維影象資料壓縮到20個正交的維度
從上面的結果可見,經過pca特徵壓縮和重建之後的特徵資料會損失2%左右的**準確性,但是相比原始資料64維的特徵而言,使用pca壓縮降低了68.75%的維度。降維和壓縮是選取資料中具有代表性的特徵,在保持資料多樣性的基礎上,規避掉大量的特徵冗餘和雜訊,不過這個過程也有可能會損失一些有用的模式資訊。大量的實踐表明,相較於損失的少部分模型效能,維度壓縮能節省大量用於模型訓練的時間,這樣看pca所帶來的模型綜合效率更為划算。
資料降維 PCA
模型原型 class sklearn.decomposition.pca n components none,copy true,whiten false 引數 copy 如果為false,則直接使用原始資料來訓練,結果會覆蓋原始資料所在的陣列 whiten 如果為true,則會將特徵向量除以n s...
PCA 資料降維實戰
資料降維是機器學習領域中非常重要的內容。降維就是指採用某種對映方法,將原高維空間中的資料點對映到低維度的空間中。降維的本質是學習乙個對映函式 f x y,其中x是原始資料點的表達,目前最多使用向量表達形式。y是資料點對映後的低維向量表達,通常y的維度小於x的維度 當然提高維度也是可以的 f可能是顯式...
PCA 1 降維原理
上圖為含有兩個特徵的樣本空間,資料的維度為2,可以忽視乙個不明顯的特徵,保留乙個相對差距明顯的特徵進行降維 顯然選擇特徵1效果好一點 我們也可以選擇一條更適合的直線 方差最大 把所有的點對映到這個直線上,來達到降維的目的 方差定義 var x frac sum x i bar 2 第一步 將所有樣本...