PCA降维可视化

二维

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() 

PCA降维可视化_第1张图片

三维

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()

PCA降维可视化_第2张图片

你可能感兴趣的:(学习笔记,python,pca)