()
| 10 | 主成分分析_2维数据降维1维演示函数 |
| 11 | ''' |
| 12 | def PCA_2D(): |
| 13 | data_2d = spio.loadmat("data.mat") |
| 14 | X = data_2d['X'] |
| 15 | m = X.shape[0] |
| 16 | plt = plot_data_2d(X,'bo') # 显示二维的数据 |
| 17 | plt.show() |
| 18 | |
| 19 | X_copy = X.copy() |
| 20 | X_norm,mu,sigma = featureNormalize(X_copy) # 归一化数据 |
| 21 | #plot_data_2d(X_norm) # 显示归一化后的数据 |
| 22 | #plt.show() |
| 23 | |
| 24 | Sigma = np.dot(np.transpose(X_norm),X_norm)/m # 求Sigma |
| 25 | U,S,V = np.linalg.svd(Sigma) # 求Sigma的奇异值分解 |
| 26 | |
| 27 | plt = plot_data_2d(X,'bo') # 显示原本数据 |
| 28 | drawline(plt, mu, mu+S[0]*(U[:,0]), 'r-') # 线,为投影的方向 |
| 29 | |
| 30 | plt.axis('square') |
| 31 | plt.show() |
| 32 | |
| 33 | K = 1 # 定义降维多少维(本来是2维的,这里降维1维) |
| 34 | '''投影之后数据(降维之后)''' |
| 35 | Z = projectData(X_norm,U,K) # 投影 |
| 36 | '''恢复数据''' |
| 37 | X_rec = recoverData(Z,U,K) # 恢复 |
| 38 | '''作图-----原数据与恢复的数据''' |
| 39 | plt = plot_data_2d(X_norm,'bo') |
| 40 | plot_data_2d(X_rec,'ro') |
| 41 | for i in range(X_norm.shape[0]): |
| 42 | drawline(plt, X_norm[i,:], X_rec[i,:], '--k') |
| 43 | plt.axis('square') |
| 44 | plt.show() |
| 45 | |
| 46 | |
| 47 | '''主成分分析_PCA图像数据降维''' |
no test coverage detected