Applicazioni della PCA

Riduzione della dimensionalità in Python

Jeroen Boeye

Head of Machine Learning, Faktion

Capire le componenti

print(pca.components_)
array([[  0.71, 0.71],
       [ -0.71, 0.71]])

PC 1 = 0.71 x Hand length + 0.71 x Foot length

PC 2 = -0.71 x Hand length + 0.71 x Foot length

lunghezza mano vs. piede con vettori

Riduzione della dimensionalità in Python

PCA per l'esplorazione dei dati

Componenti con classi di altezza

Riduzione della dimensionalità in Python

PCA in una pipeline

from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline

pipe = Pipeline([
        ('scaler', StandardScaler()),
        ('reducer', PCA())])

pc = pipe.fit_transform(ansur_df) print(pc[:,:2])
array([[-3.46114925,  1.5785215 ],
       [ 0.90860615,  2.02379935],
       ...,
       [10.7569818 , -1.40222755],
       [ 7.64802025,  1.07406209]])
Riduzione della dimensionalità in Python

Verificare l'effetto delle variabili categoriche

print(ansur_categories.head())
   Branch                  Component     Gender  BMI_class   Height_class
0  Combat Arms             Regular Army  Male    Overweight  Tall
1  Combat Support          Regular Army  Male    Overweight  Normal
2  Combat Support          Regular Army  Male    Overweight  Normal
3  Combat Service Support  Regular Army  Male    Overweight  Normal
4  Combat Service Support  Regular Army  Male    Overweight  Tall
Riduzione della dimensionalità in Python

Verificare l'effetto delle variabili categoriche

ansur_categories['PC 1'] = pc[:,0]
ansur_categories['PC 2'] = pc[:,1]

sns.scatterplot(data=ansur_categories, x='PC 1', y='PC 2', hue='Height_class', alpha=0.4)

Componenti con classi di altezza

Riduzione della dimensionalità in Python

Verificare l'effetto delle variabili categoriche

sns.scatterplot(data=ansur_categories, 
                x='PC 1', y='PC 2', 
                hue='Gender', alpha=0.4)

Componenti con classi di genere

Riduzione della dimensionalità in Python

Verificare l'effetto delle variabili categoriche

sns.scatterplot(data=ansur_categories, 
                x='PC 1', y='PC 2', 
                hue='BMI_class', alpha=0.4)

Componenti con classi di BMI

Riduzione della dimensionalità in Python

PCA in una pipeline di modello

pipe = Pipeline([
        ('scaler', StandardScaler()),
        ('reducer', PCA(n_components=3)),
        ('classifier', RandomForestClassifier())])

print(pipe['reducer'])
PCA(n_components=3)
Riduzione della dimensionalità in Python

PCA in una pipeline di modello

pipe.fit(X_train, y_train)

pipe['reducer'].explained_variance_ratio_
array([0.56, 0.13, 0.05])
pipe['reducer'].explained_variance_ratio_.sum()
0.74
print(pipe.score(X_test, y_test))
0.986
Riduzione della dimensionalità in Python

Esercitiamoci!

Riduzione della dimensionalità in Python

Preparing Video For Download...