理论部分
特征降维
特征降维是无监督学习的一种应用:将n维的数据降维为m维的数据(n>m)。可应用于数据压缩等领域
主成分分析(PCA)
主成分分析是一种常用的特征降维方法,对于m维的数据A,可以降维获得一个n维的数据B(m>n),满足$B = f(A)$且$A \approx g(f(A))$,其中f(x)为编码函数,g(x)为解码函数。
当进行主成分分析时,优化目标为$c = argmin ||x - g(c)||_{2}$,其中c为编码,g(c)为解码函数
代码实现
导入数据集
1 2
| import numpy as np import pandas as pd
|
1 2
| 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)
|
分割数据与标签
1 2
| train_x,train_y = digits_train[np.arange(64)],digits_train[64] test_x,test_y = digits_test[np.arange(64)],digits_test[64]
|
主成分分析
1 2 3 4
| 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)
|
训练支持向量机
1
| from sklearn.svm import LinearSVC
|
原始数据
1 2 3
| svc = LinearSVC() svc.fit(X=train_x,y=train_y) svc.score(test_x,test_y)
|
0.9393433500278241
PCA处理后数据
1 2 3
| svc_pca = LinearSVC() svc_pca.fit(pca_train_x,train_y) svc_pca.score(pca_test_x,test_y)
|
0.91819699499165275