机器学习---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个特征将原始数据转换到新空间中,最后原始数据被重构后

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

相关推荐
吴佳浩5 分钟前
Hermes Agent 连环 400 真凶找到了:一个 call_id 让人炸毛
人工智能·llm·agent
程序员cxuan39 分钟前
幽默,一个 Github 名字叫“马尾辫”,但是他给你省了 80% 的 token
人工智能·后端·程序员
宋哥转AI1 小时前
Agent记忆模块系列:03存储与检索链路实测验证
人工智能·agent
老金带你玩AI1 小时前
老金开源GoalPro,别让AI把目标越写越烂
人工智能
Bigfish_coding1 小时前
前端转agent-【python】-08 用 LangGraph 把 Agent 做成状态机:像写 Vue 3 状态管理一样编排 AI 流程
人工智能
刺猬的温驯2 小时前
语音克隆模型的难点之一:音素对齐及交叉注意力早期失效问题 (兼论旋转位置编码)——F5-TTS、SupertonicTTS、VoxFlash-TTS 对比
人工智能·语音合成·tts
道友可好3 小时前
AI 是最好的混乱放大器:代码熵管理实战
前端·人工智能·后端
不加辣椒4 小时前
第7章 边界与约束技术:确保输出的准确性与安全性
人工智能
AI悦创Python辅导4 小时前
Claude Code 越用越乱?Sub-Agents 才是上下文污染的解法
人工智能
Bigfish_coding4 小时前
前端转agent-【python】-07 长期记忆进阶:用 ChromaDB + 语义搜索给 Agent 装上真正的长期记忆
人工智能