Menu
CoddyTech

Gugus Bintang

Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 50 dari 51.

Sebuah klub astronomi memotret satu bagian langit. Beberapa dari 225 bintangnya saling berkaitan, lahir di awan yang sama; sisanya adalah bintang asing di depan atau di belakang:

225 bintang berupa titik-titik hitam pada foto berukuran 60 kali 40 menit busur: kumpulan bulat di sebelah kiri, aliran panjang melengkung yang meninggi di sebelah kanan, dan bintang-bintang tunggal tersebar di mana-mana

Kedua posisi dinyatakan dalam satuan menit busur, jadi eps adalah jarak pada foto.

Klub ingin mengetahui setiap cluster dan ukurannya, tanpa menyertakan bintang di lapangan yang sendirian. Apakah k-means akan memberikan hasil yang sama baiknya?

challenge icon

Tantangan

Sulit

Program membaca eps; kode awal menyiapkan dua peta, left dan right.

  1. Jalankan DBSCAN dengan eps tersebut dan min_samples=5 pada dua posisi. Cetak cluster dan bintang lapangan (label -1).
  2. Latih k-means dengan jumlah cluster yang sama (n_init=10, random_state=0). Cetak cluster terbesar dan terkecil dari setiap metode.
  3. Pada left, petakan cluster DBSCAN, dengan cluster 1 sebagai yang terbesar, lalu field stars dengan warna abu-abu. Pada right, petakan cluster k-means dengan penomoran yang sama. Tampilkan legenda.

Untuk foto lain dan eps 2.5:

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

dan petanya:

Foto lain, dua peta berdampingan. Kiri, DBSCAN: cluster 1 berupa kerumunan bulat di kiri atas, cluster 2 berupa kerumunan bulat di kanan atas, cluster 3 berupa barisan pendek bintang di bagian bawah, bintang lapangan berwarna abu-abu tersebar. Kanan, k-means dengan 3 cluster: tiga kelompok yang sama, setiap bintang lapangan masuk ke kelompok terdekat

Lalu Coddy menjelaskan hasilmu. Metode mana yang akan kamu percayai untuk menangani bintang lapangan?

Coba sendiri

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

# Satu baris untuk setiap bintang dalam foto: posisi (menit busur) dan kecerahan (magnitudo)
field = pd.read_csv("field.csv")
eps = float(input())

# Dua peta berdampingan: DBSCAN di kiri, k-means di kanan
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)")

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online