Pohon Keputusan Pertama Anda dengan Python (NFL Combine)

Feb 22 2023
Bisakah kinerja pemain di NFL Combine memprediksi apakah mereka akan direkrut atau tidak? Mari bangun model untuk mencari tahu! Apa itu Pohon Keputusan? Pohon keputusan adalah algoritma pembelajaran mesin yang digunakan untuk tugas klasifikasi dan regresi. Ini adalah jenis algoritma pembelajaran yang diawasi, artinya dilatih pada data berlabel.

Bisakah kinerja pemain di NFL Combine memprediksi apakah mereka akan direkrut atau tidak? Mari bangun model untuk mencari tahu!

Apa itu Pohon Keputusan?

Pohon keputusan adalah algoritma pembelajaran mesin yang digunakan untuk tugas klasifikasi dan regresi. Ini adalah jenis algoritma pembelajaran yang diawasi, artinya dilatih pada data berlabel. Ide dasar di balik pohon keputusan adalah membuat model yang memprediksi nilai variabel target berdasarkan beberapa variabel input.

Bagaimana kita bisa menggunakannya di sini?

Seperti yang dinyatakan di atas, pohon keputusan dapat digunakan untuk klasifikasi (apakah pemain akan direkrut atau tidak) dengan data berlabel (hasil Gabungan NFL dari masa lalu).

Mari Terapkan Ini dengan Python (Buku Catatan Lengkap ditemukan di sini:https://github.com/ant-vessicchio/learn_data_science_through_sports/blob/main/NFL_Combine/NFL_Combine_1st_Decision_Tree.ipynb)

Pertama, impor yang akan kita butuhkan:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree

master_table = master_table = pd.read_csv("NFL.csv")
master_table.head()

      
                

X = master_table.iloc[:,3:9]
Y = master_table.iloc[:,-1]

      
                

#Drop Records Containing Null Values
X.dropna(inplace=True)  
X.isnull().sum() #Check

Apa artinya ini?

Ini adalah teknik yang digunakan dalam algoritma pembelajaran mesin untuk mengevaluasi kinerja model tanpa bias.

Set pelatihan adalah bagian dari data yang digunakan untuk melatih model pembelajaran mesin. Dalam kumpulan data ini, model “mengetahui” hasilnya (disajikan dengan label keluaran dari Y), dan akan menggunakan informasi ini untuk “menyesuaikan” model yang dapat digeneralisasikan ke data baru dan “tak terlihat”.

Set pengujian digunakan untuk mengevaluasi seberapa baik kinerja model yang dilatih pada data baru yang tidak terlihat. Data pengujian mencakup data masukan dan label keluaran yang sesuai, tetapi label keluaran __tidak__ digunakan selama pengujian. Sebagai gantinya, model membuat prediksi pada data pengujian, dan keluaran yang diprediksi dibandingkan dengan keluaran sebenarnya untuk mengevaluasi kinerja model.

X_train, X_test, y_train, y_test = train_test_split(X,Y, test_size = 0.3, random_state=100)

Melatih dan Mengevaluasi Model

Kami akan menggunakan DecisionTreeClassifier di sklearn. Langkah pertama adalah membuat instance kelas dan menentukan hyperparameter yang ingin Anda gunakan. Beberapa hyperparameter yang umum digunakan antara lain:

- max_depth: kedalaman maksimum pohon keputusan
- min_samples_split: jumlah minimum sampel yang diperlukan untuk memisahkan node internal
- kriteria: fungsi yang digunakan untuk mengukur kualitas pemisahan (misalnya, 'gini' atau 'entropy')

Kami tidak akan menggunakan lebih dari ini untuk saat ini. Dan saya mendorong Anda untuk membaca dokumentasi sklearn untuk info lebih lanjut!
https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html

clf = DecisionTreeClassifier(criterion = 'gini',min_samples_split = 3, max_depth = 3)

clf.fit(X_train, y_train)

y_pred = clf.predict(X_test)

print(f" Accuracy score: {accuracy_score(y_test,y_pred)}")

      
                

Visualisasikan apa yang terjadi:

Fitur yang cukup keren dari pohon keputusan adalah visualisasi yang dapat mereka berikan. Di mana pada dasarnya Anda dapat melihat titik potong untuk setiap fitur dalam pengambilan keputusan, berapa banyak sampel yang diklasifikasikan di setiap kelas, dan indeks gini yang merupakan ukuran seberapa baik atribut tertentu memisahkan contoh pelatihan dalam pohon keputusan.

plt.figure(figsize=(12,8))
from sklearn import tree
tree.plot_tree(clf.fit(X_train,y_train), feature_names = X_train.columns )
plt.show()

      
                

Fitur yang sangat keren dari pohon keputusan adalah pembuatan fitur penting. Kepentingan fitur dalam pohon keputusan mengacu pada ukuran seberapa penting setiap fitur atau variabel masukan dalam menentukan keluaran akhir dari pohon tersebut.

# let's create a dictionary of features and their importance values
feat_dict= {}
for col, val in sorted(zip(X_train.columns, clf.feature_importances_),key=lambda x:x[1],reverse=True):
  feat_dict[col]=val

feat_df = pd.DataFrame({'Feature':feat_dict.keys(),'Importance':feat_dict.values()})
feat_df

      
                

Dan untuk membuat ilustrasi sederhana tentang pentingnya fitur:

import seaborn as sns
values = feat_df.Importance    
idx = feat_df.Feature
plt.figure(figsize=(10,8))
clrs = ['green' if (x < max(values)) else 'red' for x in values ]
sns.barplot(y=idx,x=values,palette=clrs).set(title='Feature Importance - Player Drafted (Y/N)')
plt.show()

      
                

Beberapa ide:

  • Ubah/tambahkan hyperparameter
  • Bangun model untuk setiap posisi dan lihat apakah itu meningkatkan akurasi!
  • Mungkin mencoba menangani data yang hilang secara berbeda?

Jika Anda menikmati artikel ini, beri komentar di bawah, ikuti saya untuk konten lainnya, dan ikuti seluruh kursus gratis “Pelajari Ilmu Data Melalui Olahraga” yang diselenggarakan di GitHub dan SubReddit saya:

Juga, jangan ragu untuk menghubungi saya di LinkedIn!https://www.linkedin.com/in/anthony-vessicchio/

Terima kasih banyak dan saya harap Anda menikmati artikel ini!