Menu
CoddyTech

Yıldız Kümeleri

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

Bir astronomi kulübü gökyüzünün bir bölümünü fotoğrafladı. 225 yıldızının bazıları aynı bulutta doğmuş ve birlikte bulunuyor; geri kalanlar ise önlerinde ya da arkalarında duran yabancılar:

60'a 40 yay dakikalık bir fotoğrafta siyah noktalar olarak 225 yıldız: solda yuvarlak bir kalabalık, sağda yükselen uzun kıvrımlı bir akış ve her yere dağılmış tek başına yıldızlar

Her iki konum da aynı birim olan yay dakikaları cinsindendir; dolayısıyla eps, fotoğraf üzerindeki bir mesafedir.

Kulüp, tek başına kalan saha yıldızları dışarıda bırakılarak her kümeyi ve kümenin büyüklüğünü istiyor. k-means de aynı işi yapabilir mi?

challenge icon

Görev

Zor

Program eps değerini okur; başlangıç kodu left ve right olmak üzere iki grafik hazırlar.

  1. İki konum üzerinde bu eps değeri ve min_samples=5 ile DBSCAN çalıştır. Kümelerini ve alan yıldızlarını (etiket -1) yazdır.
  2. Aynı sayıda kümeyle k-means'i eğit (n_init=10, random_state=0). Her yöntemin en büyük ve en küçük kümesini yazdır.
  3. left üzerinde DBSCAN kümelerini çiz; en büyük küme cluster 1 olsun, ardından field stars öğelerini gri renkte çiz. right üzerinde k-means kümelerini aynı şekilde numaralandırarak çiz. Göstergeyi göster.

Başka bir fotoğraf ve eps 2.5 için:

DBSCAN: 3 clusters and 29 field stars
Biggest cluster: 63 stars by DBSCAN, 77 by k-means
Smallest cluster: 41 stars by DBSCAN, 48 by k-means

ve grafikleri:

Yan yana iki grafik içeren başka bir fotoğraf. Solda, DBSCAN: küme 1 sol üstte yuvarlak bir yıldız topluluğu, küme 2 sağ üstte yuvarlak bir yıldız topluluğu, küme 3 altta kısa bir yıldız şeridi, gri alan yıldızları dağınık halde. Sağda, 3 kümeli k-means: aynı üç grup, her alan yıldızı en yakın kümeye katılmış

Ardından Coddy seninkini açıklıyor. Alan yıldızları konusunda hangi yönteme güvenirdin?

Kendin dene

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN, KMeans

# Fotoğraftaki her yıldız için bir satır: konum (yay dakikası) ve parlaklık (kadir)
field = pd.read_csv("field.csv")
eps = float(input())

# Yan yana iki harita: solda DBSCAN, sağda k-means
fig, axs = plt.subplots(1, 2, figsize=(10, 4))
left = axs[0]
right = axs[1]
left.set_title("DBSCAN")
right.set_title("k-means")
for ax in axs:
    ax.set_xlabel("x (arcmin)")
    ax.set_ylabel("y (arcmin)")

# 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