基于sklearn的主成分分析

理論部分

特征降維

特征降維是無監(jiān)督學(xué)習(xí)的一種應(yīng)用:將n維的數(shù)據(jù)降維為m維的數(shù)據(jù)(n>m)??蓱?yīng)用于數(shù)據(jù)壓縮等領(lǐng)域

主成分分析(PCA)

主成分分析是一種常用的特征降維方法,對于m維的數(shù)據(jù)A,可以降維獲得一個n維的數(shù)據(jù)B(m>n),滿足$B = f(A)$且$A \approx g(f(A))$,其中f(x)為編碼函數(shù),g(x)為解碼函數(shù)。

當(dāng)進(jìn)行主成分分析時,優(yōu)化目標(biāo)為$c = argmin ||x - g(c)||_{2}$,其中c為編碼,g(c)為解碼函數(shù)

代碼實(shí)現(xiàn)

導(dǎo)入數(shù)據(jù)集

import numpy as np
import pandas as pd
digits_train = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tra', header=None)
digits_test = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tes', header=None)

分割數(shù)據(jù)與標(biāo)簽

train_x,train_y = digits_train[np.arange(64)],digits_train[64]
test_x,test_y = digits_test[np.arange(64)],digits_test[64]

主成分分析

from sklearn.decomposition import PCA
estimator = PCA(n_components=20)
pca_train_x = estimator.fit_transform(train_x)
pca_test_x = estimator.transform(test_x)

訓(xùn)練支持向量機(jī)

from sklearn.svm import LinearSVC

原始數(shù)據(jù)

svc = LinearSVC()
svc.fit(X=train_x,y=train_y)
svc.score(test_x,test_y)
0.9393433500278241

PCA處理后數(shù)據(jù)

svc_pca = LinearSVC()
svc_pca.fit(pca_train_x,train_y)
svc_pca.score(pca_test_x,test_y)
0.91819699499165275
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容