主成分析法是最为经典与实用的特征降维
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from matplotlib import pyplot as plt
# m = np.array([[1,2],[2,3]])
# print(np.linalg.matrix_rank(m,tol=None)) #compute the rank of matrix
digits_train = pd.read_csv("optdigits.tra",header=None)
digits_text = pd.read_csv("optdigits.tes.txt",header = None)
x_digits = digits_train[np.arange(64)] #arange 返回 有终点起点,固定步长的排列
y_digits = digits_train[64]
estimator = PCA(n_components=2) #将高维压缩至 2维的pca
x_pca = estimator.fit_transform(x_digits)
print(x_pca)
print(y_digits)
def plot_colour():
colour = ['black','blue','purple','yellow','white','red','lime','cyan','orange','gray']
for i in range(len(colour)):
px = x_pca[:, 0][y_digits.as_matrix()==i]
py = x_pca[:, 1][y_digits.as_matrix()==i]
plt.scatter(px,py,c=colour[i])
plt.legend(np.arange(0,10).astype(str))
plt.xlabel('first principal component')
plt.ylabel('second principal component')
plt.show()
plot_colour()
其中学习的是:
PCA(n_components = x) #x即为想压缩的维度
arange #返回有起点终点,固定步长的排列
astype #转换数组类型
as_matrix() #将目标转换为矩阵
as_matrix() == i #理解:如果相等则为真 方可上色