PCA降维算法

PCA降维算法_python实现

简单实现代码-python

import numpy as np


# 数据归一化
def featureNormalize(X):
    # (每一个数据-当前列的均值)/当前列的标准差
    n = X.shape[1]  # 维数
    mu = np.zeros((1,n))
    sigma = np.zeros((1,n))
    Y=np.zeros((X.shape[0],X.shape[1]))

    mu = np.mean(X,axis=0)  # 列平均值
    sigma = np.std(X,axis=0)  # 列标准差
    for i in range(n):
        Y[:,i] = (X[:,i] - mu[i]) / sigma[i]
    return Y,mu,sigma


# 映射数据
def reduceDimensionData(X_norm,U,K):
    # Z = np.zeros((X_norm.shape[0],K))

    U_reduce = U[:,0:K]  # 取前K个
    Z = np.dot(X_norm,U_reduce)
    return Z


def recoverData(Z,U,K):
    # X_rec=np.zeros((Z.shape[0],U.shape[0]))
    U_recude = U[:,0:K]
    X_rec = np.dot(Z,np.transpose(U_recude))  # 还原数据(近似)
    return X_rec


def PCA(X,K):
    print("原始数据:")
    print(X)

    x_copy = X.copy()
    x_norm,mu,sigma=featureNormalize(x_copy) #归一化
    # x_norm = x_copy

    print("归一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值