64 Boyutu Görmek
Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 29 / 51.
Bu bölümde PCA'yı el yazısı rakamlar üzerinde kullanacaksın. Bölümün sonunda bir taramayı birkaç sayıya sıkıştırıp yeniden oluşturacaksın:
Önce bir göz at. Bir tarama 64 pikselden oluşur ve hiçbir grafikte 64 eksen bulunmaz, bu yüzden PCA bunları 2 eksene indirger:
digits = load_digits()
X = digits.data
y = digits.target
points = PCA(n_components=2).fit_transform(X)
for d in range(10):
ax.scatter(points[y == d, 0], points[y == d, 1], label=str(d))Burada ölçekleyici yok: her piksel aynı birimi paylaşır; mürekkep değeri 0 ile 16 arasındadır.
PCA, y'yi hiç görmedi; yalnızca noktaları renklendiriyor. Yine de her rakam kendi bölgesinde toplanıyor: yapı piksellerdeydi.
Görev
OrtaÇocuklara yönelik bir el yazısı uygulaması, çocukların hangi rakamları karıştırabileceğini öğrenmek istiyor. Program, chosen içine 358 gibi birlikte yazılmış bazı rakamları okur.
- PCA ile 1,797 taramanın tümünü ikişer sayıya indirip
pointsiçine koy. - Seçilen her rakamın taramalarını, rakamla etiketleyerek dağılım grafiğinde göster. Bir gösterge ekle ve grafiği görüntüle.
report_closest(points, y, chosen)çağrısını yap.
046 için şu çıktıyı verir:
Closest on the map: 4 and 6 (13.6 apart)ve bunu çizer. Ardından Coddy grafiğini açıklar:
Kendin dene
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
# Measuring Similarity bölümünden: haritadaki merkezleri birbirine en yakın olan seçilmiş iki rakamı yazdırır
def report_closest(points, y, chosen):
best = -1
for i in range(len(chosen)):
for j in range(i + 1, len(chosen)):
a = points[y == chosen[i]].mean(axis=0)
b = points[y == chosen[j]].mean(axis=0)
dist = np.sqrt(((a - b) ** 2).sum())
if best == -1 or dist < best:
best = dist
pair = (chosen[i], chosen[j])
print(f"Closest on the map: {pair[0]} and {pair[1]} ({best:.1f} apart)")
# 1,797 tarama: her biri X içinde 64 piksel, çizilen rakam ise y içinde
digits = load_digits()
X = digits.data
y = digits.target
# Karşılaştırılacak rakamlar, 358 gibi bitişik yazılır
chosen = []
for ch in input():
chosen.append(int(ch))
# Aşağıdaki satırları değiştirmeyin
fig, ax = plt.subplots()
ax.set_title("Digits that look alike")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
# Kodunuzu aşağıya yazın
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
1Grupları Bulma
Etiketler Olmadan ÖğrenmeBenzerliği ÖlçmeK-Means'i Elle Uygulamascikit-learn ile K-MeansÖzet: Spor Salonu Üyeleri7Uygulamada PCA
64 Boyutu GörmekBileşenleri Örüntü Olarak GörmekSıkıştır ve Yeniden OluşturModelden Önce PCATekrar: Yüz Tarayıcı10Proje: Rakam Kaşifi
Rakamları İncelePCA ile KüçültRakamları KümeleKümelere Ad VerAykırı Olanları Bul2k Sayısını Seçme
AtaletDirsek YöntemiSilüet PuanlarıKümeleme Öncesi ÖlçeklemeÖzet: Teslimat BölgeleriKendi başına pratik yap: Online Python derleyicisi