Znajdź te nietypowe
Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 47 z 51.
Ostatnie pytanie: które skany są nietypowe? Las izolacyjny przypisuje każdemu skanowi wynik — im niższy wynik, tym bardziej nietypowy skan. Najpierw najwyższe wyniki, czyli najbardziej typowe skany:
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 wyświetla numery wierszy od najniższego wyniku wzwyż, więc po odwróceniu kolejności jako pierwsze pojawiają się najbardziej zwyczajne. Wyświetl je z X: wszystkie 64 piksele.
Wyzwanie
ŚredniFinał. Kod startowy zawiera wszystko, co było do tej pory, a także guess — nazwę klastra dla każdego skanu.
- Dopasuj las izolacyjny do
X_small(contamination=0.02,random_state=0). Wypisz, ile skanów oznacza jako nietypowe, która cyfra jest oznaczana najczęściej i w ilu przypadkach ich klastry poprawnie ją nazwały. - Narysuj 10 najdziwniejszych skanów, zaczynając od najdziwniejszego: galerię 2 na 5 w
gray_r, z tytułami zawierającymi cyfry.
Przy 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 scansGaleria najbardziej typowych siódemek wygląda tak:
Twoja pokazuje najdziwniejsze skany. Klastry poprawnie nazywają 79.2% wszystkich skanów: jak wypadają te nietypowe? Zbadałeś 1,797 skanów i nigdy nie trenowałeś na etykiecie.
Spróbuj swoich sił
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
# Z „Look at the Digits”: 1,797 obrazów po 64 piksele, intensywność od 0 do 16
digits = load_digits()
X = digits.data
y = digits.target
# Z „Shrink with PCA”: 80% wariancji w 13 liczbach na obraz
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)
# Z „Cluster the Digits”: 10 klastrów wyznaczonych bez etykiet
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)
# Z „Name the Clusters”: cyfra, którą nazwano klaster każdego obrazu (79.2% zgodności z y)
names = pd.crosstab(km.labels_, y).idxmax(axis=1)
guess = names.to_numpy()[km.labels_]
# Wpisz swój kod poniżej
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nienadzorowane
1Znajdowanie grup
Uczenie się bez etykietMierzenie podobieństwaK-Means krok po krokuK-Means w scikit-learnPodsumowanie: członkowie siłowni4Klasteryzacja hierarchiczna
Łączenie krok po krokuModele aglomeracyjneDendrogramyPodsumowanie: rasy psów7PCA w praktyce
Poznajemy 64 wymiarySkładowe jako wzorceKompresuj i odtwórzPCA przed modelemPodsumowanie: skaner twarzy10Projekt: Odkrywca cyfr
Przyjrzyj się cyfromZmniejsz wymiar za pomocą PCAGrupuj cyfryNazwij grupyZnajdź te nietypowe2Wybór k
InercjaMetoda łokciaWyniki silhouetteSkalowanie przed klasteryzacjąPodsumowanie: strefy dostawPoćwicz samodzielnie: Kompilator Python online