Python Eğitimi

Python ANA SAYFA Python Tanıtımı Python Başlarken Python Sözdizimi Python Yorumları Python Değişkenleri Python Veri Türleri Python Numaraları Python Döküm Python Dizeleri Python Boole'leri Python Operatörleri Python Listeleri piton demetleri Python Setleri Python Sözlükleri Python Eğer... Başka Python while Döngüleri Döngüler için Python Python Fonksiyonları piton lambda Python Dizileri Python Sınıfları/Nesneleri Python Kalıtımı Python Yineleyiciler Python Kapsamı Python Modülleri Python Tarihleri Python Matematik Python JSON'u Python Normal İfade Python PIP'si Python Deneyin... Hariç Python Kullanıcı Girişi Python Dize Biçimlendirme

Dosya yönetimi

Python Dosya İşleme Python Okuma Dosyaları Python Dosyaları Yazma/Oluşturma Python Dosyaları Sil

Python Modülleri

NumPy Eğitimi Panda İzlenecek Yol Scipy Eğitimi

Python Matplotlib'i

Matplotlib'e Giriş Matplotlib Başlarken Matplotlib Pyplot Matplotlib Çizimi Matplotlib İşaretçileri Matplotlib Hattı Matplotlib Etiketleri Matplotlib Izgarası Matplotlib Alt Noktaları Matplotlib Dağılımı Matplotlib Çubukları Matplotlib Histogramları Matplotlib Pasta Grafikleri

Makine öğrenme

Başlarken Ortalama Medyan Modu Standart sapma Yüzdelik Veri Dağıtımı Normal Veri Dağılımı Dağılım grafiği Doğrusal Regresyon Polinom Regresyon Çoklu regresyon Ölçek Tren/Test Karar ağacı

Python MySQL

MySQL'e Başlayın MySQL Veritabanı Oluştur MySQL Tablo Oluştur MySQL Ekle MySQL Seçimi MySQL Nerede MySQL Sıralaması MySQL Sil MySQL Bırakma Tablosu MySQL Güncellemesi MySQL Sınırı MySQL'e Katılma

Python MongoDB

MongoDB Başlarken MongoDB Veritabanı Oluştur MongoDB Koleksiyon Oluştur MongoDB Ekle MongoDB Bul MongoDB Sorgusu MongoDB Sıralaması MongoDB Sil MongoDB Damla Koleksiyonu MongoDB Güncellemesi MongoDB Sınırı

Python Referansı

Python'a Genel Bakış Python Yerleşik İşlevleri Python Dizisi Yöntemleri Python Liste Yöntemleri Python Sözlük Yöntemleri Python Tuple Yöntemleri Python Kümesi Yöntemleri Python Dosya Yöntemleri Python Anahtar Kelimeleri Python İstisnaları Python Sözlüğü

Modül Referansı

Rastgele Modül İstek Modülü İstatistik Modülü Matematik Modülü cMath Modülü

Python Nasıl Yapılır?

Liste Kopyalarını Kaldır Bir Dizeyi Ters Çevir İki Sayı Ekle

Python Örnekleri

Python Örnekleri Python Derleyici Python Alıştırmaları Python Testi Python Sertifikası

Makine Öğrenimi - Karar Ağacı



Karar ağacı

Bu bölümde size nasıl bir "Karar Ağacı" yapacağınızı göstereceğiz. Karar Ağacı bir Akış Şemasıdır ve önceki deneyimlere dayalı kararlar almanıza yardımcı olabilir.

Örnekte, bir kişi bir komedi şovuna gidip gitmeyeceğine karar vermeye çalışacaktır.

Neyse ki örnek kişimiz kasabada her komedi şovu olduğunda kayıt olmuş, komedyen hakkında bazı bilgileri kaydetmiş, gidip gitmediğini de kaydetmiş.

Yaş Tecrübe etmek Rütbe Milliyet Gitmek
36 10 9 Birleşik Krallık HAYIR
42 12 4 Amerika Birleşik Devletleri HAYIR
23 4 6 n HAYIR
52 4 4 Amerika Birleşik Devletleri HAYIR
43 21 8 Amerika Birleşik Devletleri EVET
44 14 5 Birleşik Krallık HAYIR
66 3 7 n EVET
35 14 9 Birleşik Krallık EVET
52 13 7 n EVET
35 5 9 n EVET
24 3 5 Amerika Birleşik Devletleri HAYIR
18 3 7 Birleşik Krallık EVET
45 9 9 Birleşik Krallık EVET

Şimdi, bu veri setine dayanarak Python, herhangi bir yeni şovun katılmaya değer olup olmadığına karar vermek için kullanılabilecek bir karar ağacı oluşturabilir.



O nasıl çalışır?

İlk önce ihtiyacınız olan modülleri içe aktarın ve veri setini pandalarla okuyun:

Örnek

Veri setini okuyun ve yazdırın:

import pandas
from sklearn import tree
import pydotplus
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
import matplotlib.image as pltimg

df = pandas.read_csv("shows.csv")

print(df)

Bir karar ağacı yapmak için tüm verilerin sayısal olması gerekir.

Sayısal olmayan 'Milliyet' ve 'Git' sütunlarını sayısal değerlere dönüştürmemiz gerekiyor.

Pandaların, map()değerlerin nasıl dönüştürüleceği hakkında bilgi içeren bir sözlük alan bir yöntemi vardır.

{'UK': 0, 'USA': 1, 'N': 2}

'UK' değerlerini 0'a, 'USA' değerlerini 1'e ve 'N' değerlerini 2'ye dönüştürmek anlamına gelir.

Örnek

Dize değerlerini sayısal değerlere değiştirin:

d = {'UK': 0, 'USA': 1, 'N': 2}
df['Nationality'] = df['Nationality'].map(d)
d = {'YES': 1, 'NO': 0}
df['Go'] = df['Go'].map(d)

print(df)

Ardından, özellik sütunlarını hedef sütundan ayırmamız gerekir.

Özellik sütunları, tahmin etmeye çalıştığımız sütunlardır ve hedef sütun, tahmin etmeye çalıştığımız değerlerin bulunduğu sütundur.

Örnek

Xözellik sütunları, yhedef sütun:

features = ['Age', 'Experience', 'Rank', 'Nationality']

X = df[features]
y = df['Go']

print(X)
print(y)

Artık gerçek karar ağacını oluşturabilir, onu ayrıntılarımıza sığdırabilir ve bilgisayara bir .png dosyası kaydedebiliriz:

Örnek

Bir Karar Ağacı oluşturun, onu bir resim olarak kaydedin ve resmi gösterin:

dtree = DecisionTreeClassifier()
dtree = dtree.fit(X, y)
data = tree.export_graphviz(dtree, out_file=None, feature_names=features)
graph = pydotplus.graph_from_dot_data(data)
graph.write_png('mydecisiontree.png')

img=pltimg.imread('mydecisiontree.png')
imgplot = plt.imshow(img)
plt.show()


Sonuç Açıklaması

Karar ağacı, bir komedyeni görmek isteyip istememe ihtimalinizi hesaplamak için önceki kararlarınızı kullanır.

Karar ağacının farklı yönlerini okuyalım:

Rütbe

Rank <= 6.56.5 veya daha düşük rütbeli her komedyenin Trueoku (solda) ve geri kalanının Falseoku (sağda) izleyeceği anlamına gelir.

gini = 0.497 bölmenin kalitesine atıfta bulunur ve her zaman 0.0 ile 0.5 arasında bir sayıdır; burada 0.0, tüm örneklerin aynı sonucu aldığı anlamına gelir ve 0,5, bölmenin tam olarak ortada yapıldığı anlamına gelir.

samples = 13 Demek ki kararda bu noktada 13 komedyen kaldı ki bu ilk adım olduğu için hepsi bu.

value = [6, 7] bu 13 komedyenden 6'sının "HAYIR" ve 7'sinin "DEVAM" alacağı anlamına gelir.

cin

Örnekleri bölmenin birçok yolu vardır, bu eğitimde GINI yöntemini kullanıyoruz.

Gini yöntemi şu formülü kullanır:

Gini = 1 - (x/n)2 - (y/n)2

xOlumlu yanıtların sayısı ("GO") nerede , nörnek ysayısı ve olumsuz yanıtların sayısı ("HAYIR"), bize bu hesaplamayı verir:

1 - (7 / 13)2 - (6 / 13)2 = 0.497

Bir sonraki adım, 'Rütbesi' 6.5 veya daha düşük olan komedyenler için bir kutu ve geri kalanlarla birlikte bir kutu olmak üzere iki kutu içerir.

True - 5 Komedyen Burada Bitiyor:

gini = 0.0tüm örneklerin aynı sonucu aldığı anlamına gelir.

samples = 5bu branşta 5 komedyen kaldığı anlamına gelir (Rütbesi 6.5 veya daha düşük olan 5 komedyen).

value = [5, 0]5'in "HAYIR" ve 0'ın "DEVAM" alacağı anlamına gelir.

False - 8 Komedyen Devam Ediyor:

Milliyet

Nationality <= 0.5uyruk değeri 0,5'ten az olan komedyenlerin soldaki oku takip edeceği (yani Birleşik Krallık'tan herkes anlamına gelir) ve geri kalanların sağdaki oku izleyeceği anlamına gelir.

gini = 0.219örneklerin yaklaşık %22'sinin bir yöne gideceği anlamına gelir.

samples = 8bu branşta 8 komedyen kaldığı anlamına gelir (8 komedyen 6.5'ten yüksek Rütbeye sahip).

value = [1, 7]bu 8 komedyenden 1'inin "HAYIR" ve 7'sinin "DEVAM" alacağı anlamına gelir.




True - 4 Komedyen Devam:

Yaş

Age <= 35.5 35,5 yaş ve altındaki komedyenlerin soldaki oku, geri kalanların ise sağdaki oku izleyeceği anlamına gelir.

gini = 0.375 örneklerin yaklaşık %37,5'inin bir yöne gideceği anlamına gelir.

samples = 4 bu branşta 4 komedyen kaldığı anlamına gelir (İngiltere'den 4 komedyen).

value = [1, 3] bu 4 komedyenden 1'inin "HAYIR" ve 3'ünün "DEVAM" alacağı anlamına gelir.

False - 4 Komedyen Burada Bitiriyor:

gini = 0.0tüm örneklerin aynı sonucu aldığı anlamına gelir.

samples = 4 bu branşta 4 komedyen kaldığı anlamına gelir (İngiltere'den olmayan 4 komedyen).

value = [0, 4] bu 4 komedyenden 0'ın "HAYIR" ve 4'ünün "DEVAM" alacağı anlamına gelir.




True - 2 Komedyen Burada Bitiriyor:

gini = 0.0tüm örneklerin aynı sonucu aldığı anlamına gelir.

samples = 2 bu branşta 2 komedyen kaldığı anlamına gelir (2 komedyen 35.5 yaşında veya daha genç).

value = [0, 2]bu 2 komedyenden 0'ın "HAYIR" ve 2'sinin "DEVAM" alacağı anlamına gelir.

Yanlış - 2 Komedyen Devam Ediyor:

Tecrübe etmek

Experience <= 9.59,5 yıl veya daha az deneyime sahip komedyenlerin soldaki oku, geri kalanların ise sağdaki oku izleyeceği anlamına gelir.

gini = 0.5örneklerin %50'sinin bir yöne gideceği anlamına gelir.

samples = 2bu branşta 2 komedyen kaldığı anlamına gelir (2 35,5 yaşından büyük komedyen).

value = [1, 1]bu 2 komedyenden 1'inin "HAYIR" ve 1'inin "DEVAM" alacağı anlamına gelir.




True - 1 Komedyen Burada Bitiyor:

gini = 0.0tüm örneklerin aynı sonucu aldığı anlamına gelir.

samples = 1bu branşta 1 komedyen kaldığı anlamına gelir (1 komedyen 9,5 yıl veya daha az tecrübeli).

value = [0, 1]0'ın "HAYIR" alacağı ve 1'in "DEVAM" alacağı anlamına gelir.

Yanlış - 1 Komedyen Burada Bitiyor:

gini = 0.0tüm örneklerin aynı sonucu aldığı anlamına gelir.

samples = 1bu branşta 1 komedyen kaldığı anlamına gelir (1 komedyen 9,5 yıldan fazla deneyime sahip).

value = [1, 0]1'in "HAYIR" ve 0'ın "DEVAM" alacağı anlamına gelir.


Tahmin Değerleri

Yeni değerleri tahmin etmek için Karar Ağacını kullanabiliriz.

Örnek: 40 yaşında, 10 yıllık deneyime sahip ve komedi sıralaması 7 olan bir Amerikalı komedyenin oynadığı bir gösteriye gitmeli miyim?

Örnek

Yeni değerleri tahmin etmek için tahmin() yöntemini kullanın:

print(dtree.predict([[40, 10, 7, 1]]))

Örnek

Komedi sıralaması 6 olsaydı cevap ne olurdu?

print(dtree.predict([[40, 10, 6, 1]]))


Farklı Sonuçlar

Karar Ağacı'nı aynı verilerle besleseniz bile yeterince çalıştırırsanız size farklı sonuçlar verdiğini göreceksiniz.

Bunun nedeni, Karar Ağacı'nın bize %100 kesin bir cevap vermemesidir. Bir sonucun olasılığına dayanır ve cevap değişecektir.