机器学习---PCA案例

1. PCA

python 复制代码
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个特征将原始数据转换到新空间中,最后原始数据被重构后

返回,同时,降维之后的数据集也被返回。

相关推荐
Jamence10 分钟前
多模态大语言模型arxiv论文略读(113)
论文阅读·人工智能·语言模型·自然语言处理·论文笔记
chenchenyyrr13 分钟前
【数据分析】之【Numpy】学习知识梳理
numpy
haf-Lydia15 分钟前
金融科技的数字底座
人工智能·科技·金融
shengjk118 分钟前
多智能体大语言模型系统频频翻车?三大失败根源与解决方案全解析
人工智能
北极的树20 分钟前
谁说AI只会模仿,从Google AlphaEvolve项目看算法的自主创新
人工智能·算法·gemini
安思派Anspire24 分钟前
用 LangGraph 构建第一个 AI 智能体完全指南(一)
人工智能
广州正荣26 分钟前
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
人工智能·爬虫·科技
加油搞钱加油搞钱27 分钟前
鹰盾加密器基于AI的视频个性化压缩技术深度解析:从智能分析到无损压缩实践
人工智能·音视频·视频加密·鹰盾加密·鹰盾播放器
Baihai_IDP30 分钟前
OCR 识别质量如何影响 RAG 系统的性能?有何解决办法?
人工智能·llm·aigc
新智元31 分钟前
20 人团队提前实现 DeepSeek 构想,AI 算力变天?直击大模型算力成本痛点
人工智能·openai