Aplicações de PCA

Redução de Dimensionalidade em Python

Jeroen Boeye

Head of Machine Learning, Faktion

Entendendo os componentes

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

comprimento da mão vs. do pé com vetores

Redução de Dimensionalidade em Python

PCA para exploração de dados

Componentes por classes de altura

Redução de Dimensionalidade em Python

PCA em um 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]])
Redução de Dimensionalidade em Python

Verificando o efeito de variáveis categóricas

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
Redução de Dimensionalidade em Python

Verificando o efeito de variáveis categóricas

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)

Componentes por classes de altura

Redução de Dimensionalidade em Python

Verificando o efeito de variáveis categóricas

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

Componentes por gênero

Redução de Dimensionalidade em Python

Verificando o efeito de variáveis categóricas

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

Componentes por classes de IMC

Redução de Dimensionalidade em Python

PCA em um pipeline de modelo

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

print(pipe['reducer'])
PCA(n_components=3)
Redução de Dimensionalidade em Python

PCA em um pipeline de modelo

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
Redução de Dimensionalidade em Python

Vamos praticar!

Redução de Dimensionalidade em Python

Preparing Video For Download...