机器学习7-主成分分析

本文详细介绍了主成分分析(PCA),包括PCA的基本原理、基于协方差矩阵的特征值分解算法、奇异值分解算法的实现,以及如何使用sklearn库进行PCA,并通过照片压缩案例展示PCA的应用。
摘要由CSDN通过智能技术生成

1.PCA简介与原理

在这里插入图片描述
在这里插入图片描述

2.PCA的一种算法-基于协方差矩阵的特征值分解算法

1) 原理

2)代码实现
import matplotlib.pyplot as plt
import numpy as np

# 加载数据
def loaddata():
    data = np.loadtxt('data/pca_data.csv', delimiter=',')
    return data

# 协方差矩阵的特征值分解算法
# 特征归一化
def featureNormalize(X):
    # reshape(1,-1)表示转换成一行,reshape(-1,1)表示转换成一列
    mu = np.mean(X, axis=0).reshape(1, -1)
    sigma = np.std(X, axis=0, ddof=1).reshape(1, -1)
    X = (X - mu) / sigma
    return X, mu, sigma

# 实现pca
def pca(X, K):
    # 计算协方差矩阵
    m = len(X)
    sigma = np.dot(X.T, X) / (m - 1)

    # 计算协方差矩阵的特征向量
    eigenvalues, eigenvectors = np.linalg.eig(sigma)
    # 返回的特征值是要排序的,依照特征值进行从大到小排
    index = np.argsort(-eigenvalues)
    # 特征向量对应于特征值的顺序
    eigenvectors = eigenvectors[:, index]

    # 降维后的数据
    # 取出特征向量的前k维
    u_reduce = eigenvectors[:, 0:K]
    return np.dot(X, u_reduce), eigenvectors


# 将降维后的数据还原
def recoverData(Z, U, K):
    U_reduce = U[:, 0:K]
    X_rec = np.dot(Z, np.transpose(U_reduce))
    return X_rec


def plotdata(X_orgin, X_rec):
    plt.scatter(X_orgin[:, 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值