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