Menu
CoddyTech

Aykırı Olanları Bul

Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 47 / 51.

Son bir soru: Hangi taramalar aykırı? Bir izolasyon ormanı her taramaya bir puan verir; puan ne kadar düşükse tarama o kadar tuhaftır. Önce, en yüksek puanlı ve en sıradan olanlar:

İki sırada düzenlenmiş, setteki en sıradan on düzgün el yazısı tarama: beş yuvarlak 0, üç 9, bir 8 ve bir 2

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 en düşük puandan başlayarak satır numaralarını listeler; ters çevrildiğinde en sıradan olanlar önce gelir. Bunları X üzerinden göster: 64 pikselin tamamı.

challenge icon

Görev

Orta

Final. Başlangıç kodu şimdiye kadarki her şeyi ve her taramanın küme adını içeren guess değerini taşır.

  1. X_small üzerinde bir Isolation Forest modeli eğit (contamination=0.02, random_state=0). Kaç taramayı işaretlediğini, en sık işaretlenen rakamı ve bunlardan kaç tanesinin küme adıyla doğru adlandırıldığını yazdır.
  2. En tuhaf taramalardan başlayarak en tuhaf 10 taramayı çiz: gray_r kullanarak 2'ye 5'lik bir galeri oluştur ve başlıklarına rakamlarını yaz.

contamination=0.01 ile:

Flagged as odd: 18 of 1797 scans
Most often odd: 7 (10 scans)
Named right by their cluster: 11 of 18 odd scans

En sıradan 7'lerden oluşan bir galeri şöyle görünür:

2'ye 5'lik bir galeride, her birinin başlığı 7 olan on el yazısı 7; hepsi birbirine benziyor: üst çizgi, kısa bir orta çizgi ve aşağı doğru inen bir çizgi

Seninki en tuhafları gösteriyor. Kümeler, tüm taramaların %79,2'sini doğru adlandırıyor: tuhaf olanlar nasıl karşılaştırılıyor? 1.797 taramayı inceledin ve hiçbir zaman bir etiketle eğitim yapmadın.

Kendin dene

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

# Rakamlara Bak bölümünden: 64 piksellik 1,797 tarama, mürekkep değerleri 0 ile 16 arasında
digits = load_digits()
X = digits.data
y = digits.target

# PCA ile Küçült bölümünden: tarama başına 13 sayıyla varyansın 80%'i
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

# Rakamları Kümele bölümünden: etiket kullanılmadan bulunan 10 küme
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

# Kümeleri Adlandır bölümünden: her taramanın kümesine ad olarak verilen rakam (79.2% oranında y ile eşleşir)
names = pd.crosstab(km.labels_, y).idxmax(axis=1)
guess = names.to_numpy()[km.labels_]

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimsiz Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi