机器学习---PCA案例
2024-01-08 15:59:52
1. PCA
import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
def pca(dataMat,topNfeat=9999999):
meanVals=np.mean(dataMat,axis=0)
# 去除平均值,实现数据中心化
meanRemoved=dataMat-meanVals
covMat=np.cov(meanRemoved,rowvar=0)
# 计算矩阵的特征值个特征向量
eigVals,eigVects=np.linalg.eig(np.mat(covMat))
eigValInd=np.argsort(eigVals)
# 从大到小对N个值排序
eigValInd=eigValInd[:-(topNfeat+1):-1]
redEigVects=eigVects[:,eigValInd]
# 将数据转换到新空间
lowDDataMat=meanRemoved*redEigVects
reconMat=(lowDDataMat*redEigVects.T)+meanVals
return lowDDataMat,reconMat
dataMat = np.array([[1,2,3], [4,2,1], [3,2,1]])
X = load_digits().data[:, :]
lowDDataMat,reconMat = pca(X,topNfeat=2)
print(lowDDataMat)
print(reconMat)
plt.scatter(lowDDataMat[:,0].tolist(), lowDDataMat[:,1].tolist(),c = 'r',marker = 'o')
2个参数:一个参数是用于进行PCA操作的数据集,第二个参数是可选参数,即应用N个特征,首
先计算并减去原始数据集的平均值,然后计算协方差矩阵及其特征值,然后利用argsort函数对特征
值进行从小到大排序,根据特征值排序的逆序就可以得到最大的N个向量,这些向量将构成后面对
数据进行转换的矩阵,该矩阵则利用N个特征将原始数据转换到新空间中,最后原始数据被重构后
返回,同时,降维之后的数据集也被返回。
?
文章来源:https://blog.csdn.net/weixin_43961909/article/details/135384577
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!