Makine Öğrenmesi - Kümeleme Algoritmaları

Mean Shift

Yayın tarihi :21-Oca-22
Bölüm kodlarını ve/veya veri setlerini indir.

Mean Shift (ortalama kaydırma) algoritması, noktaları ortalama değerlere doğru kaydırarak yinelemeli olarak kümelere veri noktalarını atayan kümeleme algoritmasıdır. KMeans algoritması gibi küme sayısını belirtmeye gerek yoktur, küme sayısını veri setindeki değerlere göre algoritma kendisi oluşturur.

Kullanabilmek için "MeanShift" algoritmasının içe aktarılması gerekmektedir.

from sklearn.cluster import MeanShift

Söz dizimi: MeanShift(*, bandwidth=None, seeds=None, bin_seeding=False, min_bin_freq=1, cluster_all=True, n_jobs=None, max_iter=300)

  • bandwidth, bant genişliğini temsil eder. 

Örnek-1: Cars veri seti üzerinden, sayısal olan sütunlara AffinityPropagation kümeleme algoritmasını uygulayalım.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")

from sklearn.cluster import MeanShift
from sklearn.metrics import silhouette_score

Keşifsel Veri Analizi EDA 

#Veri seti okunur
df=pd.read_excel("cars.xls")
df.head()

Çıktı:

#Veri setinde sayısal olan değişkenleri x olarak atayalım
x=df.select_dtypes("number")
x.head()

Çıktı:

# Veri seti hakkında bilgi 
x.info()

Çıktı:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 804 entries, 0 to 803
Data columns (total 9 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   Price     804 non-null    float64
 1   Mileage   804 non-null    int64  
 2   Cylinder  804 non-null    int64  
 3   Liter     804 non-null    float64
 4   Doors     804 non-null    int64  
 5   Cruise    804 non-null    int64  
 6   Sound     804 non-null    int64  
 7   Leather   804 non-null    int64  
 8   Cluster   804 non-null    int32  
dtypes: float64(2), int32(1), int64(6)
memory usage: 53.5 KB
#Veri seti açıklamaları
df.describe()

Çıktı:

Model Oluşturma İşlemleri

#MeanShift ataması yapılır
model=MeanShift()

#Model eğitme işlemi
model.fit(x)

#Tahminleme sonucu
predict_model=model.predict(x)

#tahmin edilen kümelemenin ilk 20 değerini yazdıralım
predict_model[0:20]

Çıktı:

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      dtype=int64)
#Kümeleme sayısı
predict_model.max()

Çıktı:

3

 Veri setini 4 farklı kümeye(0,1,2,3) ayırma işlemi yapmış oldu.

#x veri setine yeni bir sütun oluşturularak satırların hangi kümede olduğunu belirtelim
x["Cluster"]=predict_model
x.sample(5)

Çıktı:

#Veri seti değerlerinin kümeleme öncesi dağılım grafiği
plt.figure(figsize=(10,6))
plt.scatter(x.Mileage,x.Price)
plt.title("Veri seti değerlerinin kümeleme öncesi dağılım grafiği")
plt.show()

Çıktı:

#Veri seti değerlerinin kümeleme sonrası kümeleme dağılım grafiği
plt.figure(figsize=(10,6))
plt.scatter(x.Mileage,x.Price,c=predict_model)
plt.title("Veri seti değerlerinin kümeleme sonrası kümeleme dağılım grafiği")
plt.colorbar()
plt.show()

Çıktı:

Veri setindeki değerleri MeanShift kümeleme algoritması kullanılarak 4 farklı renk ile belirtilen kümeleme işlemi yapılmış oldu.

 silhouette_score değerine bakılırsa;

silhouette_score(x,predict_model)

Çıktı:

0.3917575484617879
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.