PCA
Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 26 sur 51.
PCA trouve la direction de plus grande dispersion, puis la meilleure direction perpendiculaire à celle-ci, et ainsi de suite : les composantes. Pour les jumeaux du vin :
Les ombres de chaque ligne sur les premières composantes deviennent ses nouvelles caractéristiques :
from sklearn.decomposition import PCA
scaled = StandardScaler().fit_transform(X)
points = PCA(n_components=2).fit_transform(scaled)
print(X.shape, points.shape)Pour les 13 mesures du vin, cela affiche (178, 13) (178, 2).
Commencez par mettre à l’échelle. La PCA privilégie la dispersion, donc une caractéristique exprimée dans de grandes unités, comme la proline qui se compte en centaines, l’emporte par sa seule grandeur :
Défi
MoyenUn laboratoire d’analyse de l’eau teste des bouteilles provenant de trois sources, avec 8 mesures chacune. Une carte en 2D peut-elle distinguer les sources ? draw_springs(ax, points) colore les points en 2D selon la source.
- Normalisez
X, puis réduisez-le à 2 composantes avec PCA, danspoints. - Affichez le nombre de caractéristiques avant et après.
- Tracez les points avec
draw_springset affichez le graphique.
Pour un autre laboratoire, avec 6 mesures :
From 6 features to 2Coddy décrit votre carte.
Essayez vous-même
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# Un laboratoire d’analyse de l’eau : 8 mesures pour chacune des 120 bouteilles provenant de trois sources
waters = pd.read_csv("waters.csv")
X = waters.drop(columns="spring")
# Affiche des points en 2D, un groupe par source, avec une légende
def draw_springs(ax, points):
for spring in ["alpine", "volcanic", "coastal"]:
rows = (waters["spring"] == spring).to_numpy()
ax.scatter(points[rows, 0], points[rows, 1], s=16, label=spring)
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Spring Waters in 2D")
ax.set_xlabel("First component")
ax.set_ylabel("Second component")
# Écrivez votre code ci-dessous
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage non supervisé
1Découvrir des groupes
Apprendre sans étiquettesMesurer la similaritéK-Means à la mainK-Means avec scikit-learnRécapitulatif : les membres de la salle de sport4Classification hiérarchique
Fusion étape par étapeModèles agglomératifsDendrogrammesRécapitulatif : races de chiens7L’ACP en pratique
Visualiser 64 dimensionsLes composantes comme motifsCompresser et reconstruireL’ACP avant un modèleRécapitulatif : scanner de visages10Projet : Explorateur de chiffres
Observer les chiffresRéduire avec la PCARegrouper les chiffresNommer les groupesRepérer les intrus2Choisir k
InertieLa méthode du coudeScores de silhouetteMettre à l’échelle avant le clusteringRécapitulatif : zones de livraisonEntraînez-vous par vous-même : Compilateur Python en ligne