Tutorial Python

RUMAH Python Pengenalan Python Python Memulai Sintaks Python Komentar Python Variabel Python Tipe Data Python Nomor Python Pengecoran Python String Python Python Boolean Operator Python Daftar Python Tuple Python Set Python Kamus Python Python Jika...Lain Python Sementara Loop Python Untuk Loop Fungsi Python Python Lambda Array Python Kelas/Objek Python Warisan Python Python Iterator Lingkup Python Modul Python Tanggal Python Python Matematika Python JSON Python RegEx Python PIP Python Coba...Kecuali Masukan Pengguna Python Pemformatan String Python

Penanganan Berkas

Penanganan File Python File Baca Python Python Tulis/Buat File Python Hapus File

Modul Python

Tutorial NumPy Panduan Panda Tutorial sip

Python Matplotlib

Pengantar Matplotlib Matplotlib Memulai Matplotlib Pyplot Merencanakan Matplotlib Penanda Matplotlib Garis Matplotlib Label Matplotlib Kotak Matplotlib Subplot Matplotlib Penyebaran Matplotlib Matplotlib Bar Histogram Matplotlib Bagan Pai Matplotlib

Pembelajaran mesin

Mulai Mode Median Rata-rata Standar Deviasi Persentil Distribusi Data Distribusi Data Normal Plot Pencar Regresi linier Regresi Polinomial Regresi Berganda Skala Kereta/Tes Pohon Keputusan

Python MySQL

MySQL Memulai MySQL Buat Basis Data MySQL Buat Tabel Sisipan MySQL MySQL Pilih MySQL Dimana MySQL Dipesan Oleh Hapus MySQL Tabel Drop MySQL Pembaruan MySQL Batas MySQL MySQL Bergabung

Python MongoDB

MongoDB Memulai MongoDB Buat Basis Data MongoDB Buat Koleksi Sisipan MongoDB Temukan MongoDB Permintaan MongoDB Sortir MongoDB Hapus MongoDB Koleksi Jatuhkan MongoDB Pembaruan MongoDB Batas MongoDB

Referensi Python

Ikhtisar Python Fungsi bawaan Python Metode String Python Metode Daftar Python Metode Kamus Python Metode Tuple Python Metode Set Python Metode File Python Kata Kunci Python Pengecualian Python Daftar Istilah Python

Referensi Modul

Modul Acak Modul Permintaan Modul Statistik Modul Matematika Modul cMath

Python Bagaimana caranya?

Hapus Duplikat Daftar Membalikkan String Tambahkan Dua Angka

Contoh Python

Contoh Python Kompilator Python Latihan Python Kuis Python Sertifikat Python

Pembelajaran Mesin - Pohon Keputusan



Pohon Keputusan

Dalam bab ini kami akan menunjukkan cara membuat "Pohon Keputusan". Pohon Keputusan adalah Bagan Alir, dan dapat membantu Anda membuat keputusan berdasarkan pengalaman sebelumnya.

Dalam contoh, seseorang akan mencoba memutuskan apakah dia harus pergi ke acara komedi atau tidak.

Untung saja orang yang kita contohkan sudah mendaftar setiap kali ada acara komedi di kota, dan mencatat beberapa informasi tentang komedian itu, dan juga mendaftar apakah dia pergi atau tidak.

Usia Pengalaman Pangkat Kebangsaan Pergi
36 10 9 Inggris TIDAK
42 12 4 Amerika Serikat TIDAK
23 4 6 n TIDAK
52 4 4 Amerika Serikat TIDAK
43 21 8 Amerika Serikat YA
44 14 5 Inggris TIDAK
66 3 7 n YA
35 14 9 Inggris YA
52 13 7 n YA
35 5 9 n YA
24 3 5 Amerika Serikat TIDAK
18 3 7 Inggris YA
45 9 9 Inggris YA

Sekarang, berdasarkan kumpulan data ini, Python dapat membuat pohon keputusan yang dapat digunakan untuk memutuskan apakah ada acara baru yang layak untuk dihadiri.



Bagaimana cara kerjanya?

Pertama, impor modul yang Anda butuhkan, dan baca dataset dengan panda:

Contoh

Baca dan cetak kumpulan data:

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)

Untuk membuat pohon keputusan, semua data harus numerik.

Kita harus mengubah kolom non numerik 'Kebangsaan' dan 'Pergi' menjadi nilai numerik.

Pandas memiliki map()metode yang mengambil kamus dengan informasi tentang cara mengonversi nilai.

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

Berarti mengkonversi nilai 'UK' ke 0, 'USA' ke 1, dan 'N' ke 2.

Contoh

Ubah nilai string menjadi nilai numerik:

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)

Kemudian kita harus memisahkan kolom fitur dari kolom target .

Kolom fitur adalah kolom yang kita coba prediksi , dan kolom target adalah kolom dengan nilai yang kita coba prediksi.

Contoh

Xadalah kolom fitur, yadalah kolom target:

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

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

print(X)
print(y)

Sekarang kita dapat membuat pohon keputusan yang sebenarnya, menyesuaikannya dengan detail kita, dan menyimpan file .png di komputer:

Contoh

Buat Pohon Keputusan, simpan sebagai gambar, dan tampilkan gambar:

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()


Hasil Dijelaskan

Pohon keputusan menggunakan keputusan Anda sebelumnya untuk menghitung peluang Anda ingin pergi menemui pelawak atau tidak.

Mari kita baca aspek berbeda dari pohon keputusan:

Pangkat

Rank <= 6.5artinya setiap komedian berpangkat 6,5 atau lebih rendah akan mengikuti Truepanah (ke kiri), dan sisanya akan mengikuti Falsepanah (ke kanan).

gini = 0.497mengacu pada kualitas pemisahan, dan selalu merupakan angka antara 0,0 dan 0,5, di mana 0,0 berarti semua sampel mendapat hasil yang sama, dan 0,5 berarti pemisahan dilakukan tepat di tengah.

samples = 13berarti ada 13 komedian yang tersisa pada saat ini dalam keputusan, yang semuanya karena ini adalah langkah pertama.

value = [6, 7]artinya dari 13 komedian ini, 6 akan mendapatkan "TIDAK", dan 7 akan mendapatkan "GO".

Gini

Ada banyak cara untuk membagi sampel, kami menggunakan metode GINI dalam tutorial ini.

Metode Gini menggunakan rumus ini:

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

Di mana xjumlah jawaban positif ("GO"), nadalah jumlah sampel, dan yjumlah jawaban negatif ("TIDAK"), yang memberi kita perhitungan ini:

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

Langkah selanjutnya berisi dua kotak, satu kotak untuk komedian dengan 'Peringkat' 6,5 atau lebih rendah, dan satu kotak dengan sisanya.

Benar - 5 Komedian Berakhir Disini:

gini = 0.0 berarti semua sampel mendapat hasil yang sama.

samples = 5 berarti ada 5 komedian yang tersisa di cabang ini (5 komedian dengan Peringkat 6,5 atau lebih rendah).

value = [5, 0] berarti 5 akan mendapatkan "TIDAK" dan 0 akan mendapatkan "GO".

Salah - 8 Komedian Lanjutkan:

Kebangsaan

Nationality <= 0.5 berarti komedian dengan nilai kebangsaan kurang dari 0,5 akan mengikuti panah ke kiri (yang berarti semua orang dari Inggris, ), dan sisanya akan mengikuti panah ke kanan.

gini = 0.219 berarti bahwa sekitar 22% sampel akan menuju satu arah.

samples = 8 berarti ada 8 komedian yang tersisa di cabang ini (8 komedian dengan Peringkat lebih tinggi dari 6,5).

value = [1, 7] artinya dari 8 komedian ini, 1 akan mendapatkan "TIDAK" dan 7 akan mendapatkan "GO".




Benar - 4 Komedian Lanjutkan:

Usia

Age <= 35.5artinya komedian pada usia 35,5 atau lebih muda akan mengikuti panah ke kiri, dan sisanya akan mengikuti panah ke kanan.

gini = 0.375berarti sekitar 37,5% sampel akan menuju satu arah.

samples = 4berarti ada 4 komedian yang tersisa di cabang ini (4 komedian dari Inggris).

value = [1, 3]artinya dari 4 komedian ini, 1 akan mendapatkan "TIDAK" dan 3 akan mendapatkan "GO".

Salah - 4 Komedian Berakhir Disini:

gini = 0.0 berarti semua sampel mendapat hasil yang sama.

samples = 4berarti ada 4 komedian yang tersisa di cabang ini (4 komedian bukan dari Inggris).

value = [0, 4]artinya dari 4 komedian ini, 0 mendapat "TIDAK" dan 4 mendapat "GO".




Benar - 2 Komedian Berakhir Di Sini:

gini = 0.0 berarti semua sampel mendapat hasil yang sama.

samples = 2berarti ada 2 komedian yang tersisa di cabang ini (2 komedian berusia 35,5 tahun atau lebih muda).

value = [0, 2] artinya dari 2 komedian ini, 0 mendapat "TIDAK" dan 2 mendapat "GO".

Salah - 2 Komedian Lanjutkan:

Pengalaman

Experience <= 9.5 artinya komedian dengan pengalaman 9,5 tahun, atau kurang, akan mengikuti panah ke kiri, dan sisanya akan mengikuti panah ke kanan.

gini = 0.5 berarti 50% sampel akan menuju satu arah.

samples = 2 berarti ada 2 komedian yang tersisa di cabang ini (2 komedian yang lebih tua dari 35,5).

value = [1, 1] artinya dari 2 komedian ini, 1 akan mendapatkan "TIDAK" dan 1 akan mendapatkan "GO".




Benar - 1 Komedian Berakhir Disini:

gini = 0.0 berarti semua sampel mendapat hasil yang sama.

samples = 1 berarti ada 1 komedian yang tersisa di cabang ini (1 komedian dengan pengalaman 9,5 tahun atau kurang).

value = [0, 1] berarti 0 akan mendapatkan "TIDAK" dan 1 akan mendapatkan "GO".

Salah - 1 Komedian Berakhir Disini:

gini = 0.0 berarti semua sampel mendapat hasil yang sama.

samples = 1 berarti ada 1 komedian yang tersisa di cabang ini (1 komedian dengan pengalaman lebih dari 9,5 tahun).

value = [1, 0] berarti 1 akan mendapatkan "TIDAK" dan 0 akan mendapatkan "GO".


Prediksi Nilai

Kita dapat menggunakan Pohon Keputusan untuk memprediksi nilai baru.

Contoh: Haruskah saya menonton pertunjukan yang dibintangi komedian Amerika berusia 40 tahun, dengan pengalaman 10 tahun, dan peringkat komedi 7?

Contoh

Gunakan metode predict() untuk memprediksi nilai baru:

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

Contoh

Apa jawabannya jika peringkat komedi adalah 6?

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


Hasil Berbeda

Anda akan melihat bahwa Pohon Keputusan memberi Anda hasil yang berbeda jika Anda menjalankannya cukup lama, bahkan jika Anda memasukkannya dengan data yang sama.

Itu karena Pohon Keputusan tidak memberi kita jawaban pasti 100%. Ini didasarkan pada kemungkinan hasil, dan jawabannya akan bervariasi.