Hiyerarşik Kümeleme Python Uygulama

Kümeleme ve hiyerarşik kümelemede ilerlemeye devam ediyoruz. Bu yazımızda Python dilinde hiyerarşik kümeleme uygulaması yapacağız.

Önce kütüphaneleri ve veri setini yükleyelim:
Veri setini buradan indirebilirsiniz.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
os.chdir('Calisma_Dizniniz')
dataset = pd.read_csv('Mall_Customers.csv')

Spyder varialble explorer ekranından veri setimizi görelim.

Veriyi Anlamak

Yukarıda görülen veri seti bir markete ait olsun. Market, müşterilerine dağıttığı üyelik kartları ile müşteri bilgileri ile satın alma bilgilerini kaydetmiş olsun. Niteliklerimiz sırasıyla şöyle: Müşteri Numarası (CustomerID), Cinsiyet (Gender), Yaş (Age), Yıllık Gelir (Annual Income) ve Harcama Skoru (Spending Score). Harcama Skoru müşterilerin geçmiş alış-veriş kayıtlarına dayanarak market tarafından 1 ile 100 arasında belirlenmiş bir puandır. Puan 1’e yaklaşması müşterinin daha az harcama yapan bir müşteri olduğunu gösterir. Market elindeki müşterileri segmentlere (kümelere) ayırmak ister. Kim bilir belki de her segmentteki müşteriyi ayrı ele alacak ve ona göre satış arttırma politikaları üretecektir. Kaç segment oluşacağı belli değildir.

Nitelikleri Seçmek

Yukarıda gördüğümüz niteliklerden bağımsız değişken olarak sadece yıllık geliri ve harcama skorunu kullanacağız.

X = dataset.iloc[:,[3,4]].values

Elimizde veri seti var. Şimdi veriyi işlemeye başlayabiliriz. K-ortalamalar tekniğinde dirsek yöntemi ile küme sayısını seçmiştik. Hiyerarşik kümelemede ise dendogram kullanacağız. Önce bir dendogram oluşturup bakalım kaç ayrı küme oluşturabiliriz. Bunun için scipy kütüphanesini kullanıyoruz.

import scipy.cluster.hierarchy as sch
dendogram = sch.dendrogram(sch.linkage(X, method = 'ward'))
plt.title('Dendogram')
plt.xlabel('Müşteriler')
plt.ylabel('Öklid Mesafesi')
plt.show()

Dendogramımız yukarıda çizildi. Şimdi herhangi bir yatay çizgi tarafından bölünmeyen en uzun bacağı bulalım.

Şimdi kümeleme algoritmamızı çalıştıralım. Bunun için scikit-learn kütüphanesinin AgglomerativeClustering sınıfını kullanacağız. Nesnemiz oluşurken yapıcıya (__init__) bazı parametreler gönderiyoruz. Bunlardan ilki n_clusters yani küme sayısı. Bu küme sayısını dendogramdan faydalanarak beş belirlemiştik. İkincisi affinity hengi yöntemle mesafe ölçüleceğini belirtir, nümerik nitalikler olduğu için euclidean yazıyoruz. Son parametremiz linkage, buraya da küme içi varyansı asgari düzeye indiren ward değerini veriyoruz.

from sklearn.cluster import AgglomerativeClustering
hiyerarsikKumeleyici = AgglomerativeClustering(n_clusters=5, affinity='euclidean', linkage='ward')
kume_elemanlari = hiyerarsikKumeleyici.fit_predict(X)

Kodlarımızı çalıştırdık ve variable explorer dan küme elemanlari ile orijinal dataseti açıyor ve hangi müşteri hangi kümeye düşmüş bakıyoruz.

Müşteri numarası 1 oaln müşteri 4’üncü kümeye, 2 olan 3’üncü kümeye düşmüş. Kalanları siz kıyas ediniz. Şimdi kümelerimizi görsel hale getirelim.

plt.scatter(X[kume_elemanlari == 0, 0], X[kume_elemanlari == 0, 1], s = 100, c = 'red', label = 'Cluster 1')
plt.scatter(X[kume_elemanlari == 1, 0], X[kume_elemanlari == 1, 1], s = 100, c = 'blue', label = 'Cluster 2')
plt.scatter(X[kume_elemanlari == 2, 0], X[kume_elemanlari == 2, 1], s = 100, c = 'green', label = 'Cluster 3')
plt.scatter(X[kume_elemanlari == 3, 0], X[kume_elemanlari == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4')
plt.scatter(X[kume_elemanlari == 4, 0], X[kume_elemanlari == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5')
plt.title('Hiyerarşik Kümeleme ile Müşteri Kümeleri')
plt.xlabel('Yıllık Gelir')
plt.ylabel('Harcama Skoru (1-100)')
plt.legend()
plt.show()

Grafiğimizi oluşturduk. Şimdi daha iyi görebiliyoruz. Kümelerimizi tek tek inceleyelim. Küme 1’de yer alan müşteriler (kırmızı noktalar) Yıllık Geliri yüksek ancak harcama skoru düşük müşteriler. Market sahibi bu müşterilerin daha fazla harcamasını sağlayacak tedbirler düşünebilir. Küme 2’deki müşteriler (mavi noktalar) ortalama gelir ve ortalama harcama skoruna sahipler ve birbirine çok benzeşiyor. Muhtemelen küme içi noktaların merkeze uzaklığının kareler ortalaması (wcss) bu kümede en yüksektir. Küme 3 (yeşil noktalar) yüksek gelirle birlikte yüksek harcama skoruna sahip müşteriler. Her market işletmesinin sahip olmak isteyeceği müşteri segmetidir. Market bu müşterileri elinde tutmak ve bu kümeye müşteri eklemek için gerekli politikaları üretip uygulamaya koyabilir. Küme 4’teki müşteriler (turkuaz mavi) düşük gelire sahip olmasına rağmen yüksek harcama skoruna sahip. Bu müşteriler muhtemelen kredi kartı batağında olan dikkatsiz müşterilerdir 🙂 Küme 5 (pembe) düşük gelire sahip ve harcama skoru düşük müşteriler. Bu müşterilere dikkatli ve tutumlu müşteriler olarak adlandırabiliriz. Kümeleme ile uygulamamız burada son buldu. Bir hatırlatma yapalım: grafikle ilgili kodları sadece iki boyutlu kümelemede kullanabiliriz. Esen kalın…

Hiyerarşik Kümeleme Python Uygulama” için 3 yorum

  • 10 Şubat 2018 tarihinde, saat 14:25
    Permalink

    plt.scatter(X[kume_elemanlari == 0, 0], X[kume_elemanlari == 0, 1], s = 100, c = ‘red’, label = ‘Cluster 1’)
    plt.scatter(X[kume_elemanlari == 1, 0], X[kume_elemanlari == 1, 1], s = 100, c = ‘blue’, label = ‘Cluster 2’)
    plt.scatter(X[kume_elemanlari == 2, 0], X[kume_elemanlari == 2, 1], s = 100, c = ‘green’, label = ‘Cluster 3’)
    plt.scatter(X[kume_elemanlari == 3, 0], X[kume_elemanlari == 3, 1], s = 100, c = ‘cyan’, label = ‘Cluster 4’)
    plt.scatter(X[kume_elemanlari == 4, 0], X[kume_elemanlari == 4, 1], s = 100, c = ‘magenta’, label = ‘Cluster 5’)
    plt fonsiyonun icinde yer alan sabit 0 ve 1 neyi temsil ediyor

    Yanıtla
    • 21 Haziran 2019 tarihinde, saat 15:47
      Permalink

      Merhaba onlar sabit değil. numpyndarray indeksleri. X[kume_elemanlari == 0, 0] sıfırıncı kümeye düşenlerin yıllık geliri, X[kume_elemanlari == 0, 1] ise sıfırıncı kümeye düşenlerin harcama skorunu temsil ediyor. Biz sıfırıncı kümeyi bir diye adlandırdık grafikte.

      Yanıtla
  • 6 Ağustos 2019 tarihinde, saat 01:40
    Permalink

    istatistik ve olasılık dahil tüm makine öğrenmesi yazılarınız şimdiye kadar okuduğum en anlaşılır makaleler. Bu anlatımınızı devam ettirmeniz dileğiyle

    Yanıtla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Barkod Etiketi üretimi yapan firmaların işi ciddi bir iştir. Bu anlamda sizin de hangi firmayla çalışma yatığınız çok büyük önem taşır. Kullanım alanı sınırsızdır. Her alanda ve her sektörde bu etiketlere ihtiyaç duyulur. Etiket çeşitleri ve Barkod etiketleri, seri üretimle hazırlanmaktadır. Etiketler ahşap, plastik, metal ya da cam gibi ambalajlı ürünlerin üzerilerine ugulanır.
Mide botoksu midenin belirli yerlerine botoks maddesi enjekte etme suretiyle midedeki kasların çalışmasını sınırlandırmayı ve sayede midenin gıdaları sindirim sürecini yavaşlatarak buna bağlı olan açlık-tokluk hissi süresinin de uzatılmasını amaçlayan ameliyatsız kolay kilo verme tedavisidir. Botoks uygulanırken, midenin detaylı şekilde içerden görüntülenmesini sağlayan endoskopi uygulaması ile gerçekleştirilir. Bu sayede hastaya sadece gastroskpik uygulaması kadar bir rahatsızlık olur. Özellikle diyet programlarına ve düzenli egzersizlere uymakta zorlanan ve buna bağlı olarak da obeziteye yakalanan, bu yüzdende obezitenin sebep olduğu çeşitli sağlık sorunları olan kişiler için mide botoksu bir devrim niteliğindedir ve son yıllarda ülkemizde yaygın olarak kullanılmaktadır.
En güzel cami halısı dış avlusu olup bunun çevresi pencereli duvarlarla çevrilidir. Bu avulya 3 ü cephede olmak üzere, 8 kapıdan girilir. Şadırvan avlusu, 26 adet granit mermer ve porfir sütuna oturtulmuş, 30 kubbeyle çevrili geniş alandır. Mermer döşemeli bu geniş sahanın ortasında 6 mermer sütunlu şadırvan, sahanın azametini gösterir. Şadırvanın kemerleri, kabartma olarak Rumi geçmelerle ve köşebentleri, kabartma, lale ve karanfil motifleriyle bezelidir.
En güzel cami halısı dış avlusu olup bunun çevresi pencereli duvarlarla çevrilidir. Bu avulya 3 ü cephede olmak üzere, 8 kapıdan girilir. Şadırvan avlusu, 26 adet granit mermer ve porfir sütuna oturtulmuş, 30 kubbeyle çevrili geniş alandır. Mermer döşemeli bu geniş sahanın ortasında 6 mermer sütunlu şadırvan, sahanın azametini gösterir. Şadırvanın kemerleri, kabartma olarak Rumi geçmelerle ve köşebentleri, kabartma, lale ve karanfil motifleriyle bezelidir.
Termal Etiket Eco Termal etiket, yüzeyinde hami bir katman bulunmayan miktar çeşididir. Kumbara üzerine termal lamine edilmesi sonucunda oluşmaktadır. Kullanılan barkod yazıcının baş bölgesindeki ısı beraberlik birlikte termal sıvılaşma özelliği gösterir dahi bu şekilde Eco termal etiketin üzerine baskı alınır. Bu termal etiketlere yumruk termal olarak (ısıyla) yapılır ve yerde yüzden ribon kullanılmaz. Ribon kullanımı olmadığı için tahakküm maliyeti sıfıra yakındır.
Dijital Baskı ve baskı etiketi teknolojileri geliştikçe firmaların büyük ebatlı etiket ihtiyaçlarına da dijital çözümler sunulmaya başlamıştır. Böylece, birbirinden canlı renklerin ve kusursuz çizgilerin hakimiyetindeki büyük ebatlı dijital baskı etkileri; kurumsal firmaların reklam kampanyalarındaki en iddialı unsurlarına dönüşmüştür.