Repérer les intrus
Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 47 sur 51.
Une dernière question : quelles sont les numérisations les plus inhabituelles ? Une forêt d’isolation attribue un score à chaque numérisation, et plus le score est bas, plus elle est étrange. D’abord, les scores les plus élevés, les plus ordinaires :
iso = IsolationForest(contamination=0.02, random_state=0)
flags = iso.fit_predict(X_small)
scores = iso.score_samples(X_small)
typical = np.argsort(scores)[::-1][:10]np.argsort liste les numéros de ligne du score le plus bas au plus élevé ; inversée, la plus ordinaire apparaît en premier. Affiche-les depuis X : les 64 pixels.
Défi
MoyenLe final. Le code de départ contient tout ce qui a été fait jusqu’ici, ainsi que guess, le nom du cluster de chaque scan.
- Ajuste une forêt d’isolation sur
X_small(contamination=0.02,random_state=0). Affiche combien elle signale, le chiffre signalé le plus souvent et combien de ces scans sont correctement nommés par leur cluster. - Dessine les 10 scans les plus étranges, en commençant par le plus étrange : une galerie de 2 par 5 en
gray_r, avec leurs chiffres pour titres.
Avec contamination=0.01 :
Flagged as odd: 18 of 1797 scans
Most often odd: 7 (10 scans)
Named right by their cluster: 11 of 18 odd scansUne galerie des 7 les plus ordinaires ressemble à ceci :
La tienne montre les plus étranges. Les clusters nomment correctement 79.2% de tous les scans : comment les scans atypiques se comparent-ils ? Tu as exploré 1,797 scans et n’as jamais entraîné de modèle sur une étiquette.
Essayez vous-même
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.ensemble import IsolationForest
# De Look at the Digits : 1,797 images de 64 pixels, avec des niveaux d’encre de 0 à 16
digits = load_digits()
X = digits.data
y = digits.target
# De Shrink with PCA : 80% de la variance résumée par 13 nombres par image
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)
# De Cluster the Digits : 10 groupes, trouvés sans étiquette
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)
# De Name the Clusters : le chiffre qui donne son nom au groupe de chaque image (79.2% correspondent à y)
names = pd.crosstab(km.labels_, y).idxmax(axis=1)
guess = names.to_numpy()[km.labels_]
# É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