二维
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
scaler = MinMaxScaler()
X = scaler.fit_transform(X)
from sklearn.decomposition import 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
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(n_components=3)
pca.fit(X)
X_pca = pca.transform(X)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
fig.set_size_inches(10, 10)
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()
