PCA降维可视化

本文介绍了如何使用Python中的pandas和sklearn库进行数据预处理,包括MinMaxScaler缩放和PCA降维。首先展示了一维PCA在二维空间中的应用,然后扩展到三维可视化,通过散点图展示正负样本在主成分分析后的分布情况。
摘要由CSDN通过智能技术生成

二维

import pandas as pd
import warnings
warnings.filterwarnings("ignore")

df = pd.read_csv('data/data.csv').dropna()
features = df.columns[:-1]
X, y = df[features], df['label']

from sklearn.preprocessing import MinMaxScaler
# 创建MinMaxScaler对象
scaler = MinMaxScaler()
# 对数据进行拟合和转换
X = scaler.fit_transform(X)

from sklearn.decomposition import PCA  
# PCA降维
pca = PCA(n_components=2)  
X_pca = pca.fit_transform(X) 

# 得到正负样本集  
label = y
pos_mask = label == 0  
neg_mask = label == 1  
pos = X_pca[pos_mask]  
neg = X_pca[neg_mask]  

import matplotlib.pyplot as plt
# 防止中文乱码
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 可视化  
plt.scatter(pos[:, 0], pos[:, 1], s=60, marker='o', c='r')  
plt.scatter(neg[:, 0], neg[:, 1], s=60, marker='^', c='b')  
plt.title(u'PCA降维')  
plt.xlabel(u'元素 1')  
plt.ylabel(u'元素 2')  
plt.show() 

在这里插入图片描述

三维

import pandas as pd
import warnings
warnings.filterwarnings("ignore")

df = pd.read_csv('data/data.csv').dropna()
features = df.columns[:-1]
X, y = df[features], df['label']

from sklearn.preprocessing import MinMaxScaler
# 创建MinMaxScaler对象
scaler = MinMaxScaler()
# 对数据进行拟合和转换
X = scaler.fit_transform(X)

from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 防止中文乱码
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
from mpl_toolkits.mplot3d import Axes3D

# 创建PCA对象
pca = PCA(n_components=3)
# 使用数据集拟合PCA对象
pca.fit(X)
# 将数据集进行降维
X_pca = pca.transform(X)

# 创建3D图形
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 设置图形大小
fig.set_size_inches(10, 10)
# 绘制3D散点图
ax.scatter(X_pca[:, 0], X_pca[:, 1], X_pca[:, 2], c=-y, cmap='viridis', s=50)
# 设置坐标轴标签
ax.set_xlabel('PC1')
ax.set_ylabel('PC2')
ax.set_zlabel('PC3')
# 设置图形标题
ax.set_title('PCA visualization in 3D')
# 显示图形
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝净云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值