python numpy 实现PCA

 

import numpy as np
from sklearn import datasets

iris = datasets.load_iris()

cov_mat = np.cov(iris.data, rowvar=False)
eignvalue, featurevector = np.linalg.eig(cov_mat)

print(cov_mat, '\n')
print(eignvalue, '\n')
print(featurevector)



#This is sklearn

from sklearn import decomposition

pca = decomposition.PCA()
pca_result = pca.fit(iris.data)

#特征向量,成分
print(pca_result.components_, '\rn')
#特征值,方差
print(pca_result.components_, '\rn')

pca_result.singular_values的值等于下方的S,是奇异值

import numpy as np
from sklearn import datasets

iris = datasets.load_iris()
mean_ = np.mean(iris.data, 0)
X = iris.data - mean_
Q,S,VT = np.linalg.svd(X)

print(S)
[25.09996044  6.01314738  3.41368064  1.88452351]

 

import numpy as np
from sklearn import datasets
from sklearn import decomposition


iris = datasets.load_iris()
mean_ = np.mean(iris.data, 0)
X = iris.data - mean_
cov_mat = np.cov(iris.data, rowvar=False)


print('\n', np.dot(X[:, 0], X[:, 0])/149, '\n')

eignvalue, featurevector = np.linalg.eig(cov_mat)
my_new_data = np.dot(featurevector.T, X.T).T

print(cov_mat, '\n')
print(eignvalue, '\n')
print(featurevector)

pca = decomposition.PCA(n_components=2)
# pca = decomposition.PCA()
pca_result = pca.fit(iris.data)
new_data = pca.fit_transform(iris.data)

# back = np.dot(np.linalg.inv(featurevector.T), my_new_data.T).T
#只保留两个成分的恢复结果
my_new_data[:,3:4] = 0
back = np.dot(np.linalg.inv(featurevector.T), my_new_data.T).T

 

参考文献:

scikit learn中PCA的使用方法

机器学习(七):主成分分析PCA降维_Python

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值