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

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

相关推荐
飞哥数智坊19 分钟前
先理需求再写代码:新版 Cursor 用 Plan Mode 落地费曼学习法
人工智能·ai编程·cursor
abcd_zjq19 分钟前
【2025最新】【win10】vs2026+qt6.9+opencv(cmake编译opencv_contrib拓展模
人工智能·qt·opencv·计算机视觉·visual studio
Voyager_422 分钟前
图像处理踩坑:浮点数误差导致的缩放尺寸异常与解决办法
数据结构·图像处理·人工智能·python·算法
知行力24 分钟前
【GitHub每日速递 251011】无需注册!本地开源AI应用构建器Dyad,跨平台速下载!
人工智能·开源·github
jie*24 分钟前
小杰深度学习(ten)——视觉-经典神经网络——LetNet
人工智能·python·深度学习·神经网络·计算机网络·数据分析
xwz小王子27 分钟前
Nature Machine Intelligence丨多模态大型语言模型中的视觉认知
人工智能·语言模型·自然语言处理
冰糖猕猴桃35 分钟前
【AI】深入 LangChain 生态:核心包架构解析
人工智能·ai·架构·langchain
松果财经1 小时前
千亿级赛道,Robobus 赛道中标新加坡自动驾驶巴士项目的“确定性机会”
人工智能·机器学习·自动驾驶
TMT星球1 小时前
滴滴自动驾驶张博:坚持负责任的科技创新,积极探索新型就业空间
人工智能·科技·自动驾驶
Blossom.1181 小时前
用一颗MCU跑通7B大模型:RISC-V+SRAM极致量化实战
人工智能·python·单片机·嵌入式硬件·opencv·机器学习·risc-v