Görüntü Renkleri
Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 41 / 51.
Serigrafi baskı yapan birinin elinde milyonlarca renk değil, birkaç mürekkep vardır. k-means, herhangi bir resim için en uygun birkaç rengi seçer:
Bir renkli görüntünün şekli (satırlar, sütunlar, 3) biçimindedir: piksel başına kırmızı, yeşil ve mavi değerleri, her biri 0 ile 1 arasındadır. Tek bir yeniden şekillendirme, pikselleri veriye dönüştürür:
pixels = image.reshape(-1, 3)
km = KMeans(n_clusters=4, n_init=10, random_state=0).fit(pixels)
poster = km.cluster_centers_[km.labels_].reshape(image.shape)
ax.imshow(poster)Her merkez bir renktir. Merkezleri etiketlerle indekslemek, her piksele kendi merkezinin rengini verir; yeniden şekillendirme satırları tekrar bir görüntüye dönüştürür.
Görev
OrtaBir poster stüdyosu, bir dağ gölünü k mürekkeple serigrafi baskı yapıyor. Başlangıç kodu, 40'a 60 boyutlarındaki image'ı çiziyor, k'yı okuyor ve başlıklı bir grafik oluşturuyor.
- Görüntüyü her piksel için bir satır olacak şekilde dönüştür ve k-means ile
krenk bul. - Her pikseli merkezinin rengiyle yeniden boya ve satırları tekrar bir resimde birleştir.
- Resmi
axüzerinde çiz ve göster.
5 mürekkeple yapılmış bu gün batımı gibi:
Programın hiçbir şey yazdırmaz: Coddy resmini ve renklerini açıklar. Ardından k için başka değerler dene: kırmızı tekne ne zaman kendi mürekkep rengini alıyor?
Kendin dene
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 40'a 60 boyutlarında bir dağ gölü manzarası çizer: gökyüzü, karlı bir zirve, orman, su ve kırmızı bir tekne
def paint_lake():
image = np.zeros((40, 60, 3))
for r in range(40):
for c in range(60):
if 30 <= r <= 31 and 10 <= c <= 17 - (r - 30) * 2:
image[r, c] = [0.8, 0.15, 0.1]
elif r >= 27:
t = (r - 27) / 12
image[r, c] = [0.1, 0.45 - 0.2 * t, 0.65 - 0.2 * t]
elif r >= 21:
image[r, c] = [0.1, 0.35 + 0.05 * (c % 3), 0.15]
elif r >= abs(c - 34) + 4 and r < 10:
image[r, c] = [0.95, 0.95, 0.97]
elif r >= abs(c - 34) + 4:
image[r, c] = [0.45, 0.42, 0.45]
else:
image[r, c] = [0.55 + r / 50, 0.75 + r / 120, 0.95]
return np.round(image, 3)
# Aşağıdaki satırları değiştirmeyin
image = paint_lake()
k = int(input())
fig, ax = plt.subplots()
ax.set_title(f"{k} inks")
ax.axis("off")
# 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ölgeleri3Kümeleri Yorumlama
Kümelerin ProfiliGerçek Birimlerde MerkezlerKümeler ve Bilinen EtiketlerK-Means Ne Zaman Başarısız OlurÖzet: Çay Tadımı9Kümeler İş Başında
Müşteri SegmentleriÖzellik Olarak KümelerGörüntü RenkleriTekrar: Çalma Listesi Ruh HâlleriKendi başına pratik yap: Online Python derleyicisi