PCA实验:对data.csv文件中的数据实现PCA操作并实现维度恢复

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 数据读取
data = pd.read_csv('data.csv')
list = data.values.tolist()
X = np.array(list)

# 特征归一化
X_demean = (X - np.mean(X))
# 归一化后得数据散点图
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.scatter(X_demean[:, 0], X_demean[:, 1], s=15)

# 计算协方差矩阵
sigma = (X_demean.T @ X_demean)/X_demean.shape[0]

# 奇异值分解
u, s, v = np.linalg.svd(sigma)

# 降维
u_reduced = u[:, :1]
z = np.dot(X_demean, u_reduced)

# 维度恢复
u_reduced = u[:, :1]
X_recover = np.dot(z, u_reduced.T)

# 维度恢复后的数据散点图
plt.subplot(1, 2, 2)
plt.scatter(X_recover[:, 0], X_recover[:, 1], s=15)
plt.show()

结果如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值