机器学习——Python实现主成分分析算法
1、代码演示
def getCovarianceMatrix(D):
'''
D:原始的样本集合,其中每一个X是一个行向量。
'''
sh = D[0].shape
X_mean = np.zeros(sh)
for X in D:
X_mean += X
X_mean = X_mean / len(D)
CorMatrix = np.zeros((sh[0],sh[0]))
for X in D:
CorMatrix += np.dot((X-X_mean).T,(X-X_mean))
return CorMatrix
def futureGet(CorMatrix):
future,future_vectors = np.linalg.eig(CorMatrix)
return future,future_vectors
def normalization(future_vectors,k):
'''
K:表示我们最终要保留的特征向量的个数
'''
result = []
for i in range(k):
temp = np.dot(future_vectors[i],future_vectors[i].T)
temp = np.sqrt(temp)
result.append(future_vectors[i]/temp)
A_matrix = np.array(result)
return A_matrix
def getNew(A_matrix,D):
result = []
for item in D:
result.append(np.dot(A_matrix,item))
return result
2 其他说明
- 本文的原理链接 机器学习——主成分分析(PCA)
- 本文主要采用的是特征分解的方式,还可以采用SVD奇异值分解的算法来进行矩阵分解,本文没有给出演示。