درخت تصمیم (Decision Tree)
«درخت تصمیم (Decision Tree)» مثل فلوچارت است. با تجربه های قبلی، مسیر تصمیم را نشان می دهد. یعنی از ویژگی ها به پاسخ می رسیم. این مدل برای طبقه بندی خیلی محبوب است.
شروع کار با داده
اول داده را با پانداس بخوان. پانداس (Pandas) کتابخانه کار با جدول است.
import pandas as pd
df = pd.read_csv("data.csv")
print(df)
عددی کردن ستون های متنی
مدل فقط عدد می فهمد. پس ملیت و پاسخ را به عدد تبدیل کن. نگاشت (Map) یعنی جایگزینی متن با عدد.
import pandas as pd
df = pd.read_csv("data.csv")
nat_map = {"UK": 0, "USA": 1, "N": 2}
df["Nationality"] = df["Nationality"].map(nat_map)
go_map = {"YES": 1, "NO": 0}
df["Go"] = df["Go"].map(go_map)
print(df)
جدا کردن ویژگی ها و هدف
ویژگی (Feature) ورودی مدل است. هدف (Target) خروجی مدل است.
import pandas as pd
df = pd.read_csv("data.csv")
nat_map = {"UK": 0, "USA": 1, "N": 2}
df["Nationality"] = df["Nationality"].map(nat_map)
go_map = {"YES": 1, "NO": 0}
df["Go"] = df["Go"].map(go_map)
features = ["Age", "Experience", "Rank", "Nationality"]
X = df[features]
y = df["Go"]
print(X)
print(y)
ساخت و ترسیم درخت تصمیم
از DecisionTreeClassifier استفاده می کنیم. ترسیم، گره ها و شروط را نشان می دهد.
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
import matplotlib.pyplot as plt
df = pd.read_csv("data.csv")
nat_map = {"UK": 0, "USA": 1, "N": 2}
df["Nationality"] = df["Nationality"].map(nat_map)
go_map = {"YES": 1, "NO": 0}
df["Go"] = df["Go"].map(go_map)
features = ["Age", "Experience", "Rank", "Nationality"]
X = df[features]
y = df["Go"]
dtree = DecisionTreeClassifier()
dtree = dtree.fit(X, y)
tree.plot_tree(dtree, feature_names=features)
plt.show()
نکته: معیار جینی (Gini) میزان خلوص گره را می سنجد. عدد 0 یعنی کاملاً خالص.
پیش بینی با درخت
حالا نمونه ی تازه بده و خروجی بگیر. ترتیب ویژگی ها مهم است.
from sklearn.tree import DecisionTreeClassifier
# فرض کن dtree از قبل آموزش دیده است
result1 = dtree.predict([[40, 10, 7, 1]])
print(result1)
result2 = dtree.predict([[40, 10, 6, 1]])
print(result2)
هشدار: درخت همیشه قطعی نیست. بر پایه احتمال تصمیم می گیرد.
جمع بندی سریع
- ستون های متنی را به عدد نگاشت کن.
- ویژگی ها را از هدف جدا کن.
- درخت را آموزش بده و ترسیم کن.
- Gini خلوص گره ها را نشان می دهد.
- پیش بینی کن و نتیجه را تفسیر کن.
برای مرور درخت تصمیم این صفحه را نگه دار. همچنین قبل اش آموزش/آزمون را بخوان و بعدش به ماتریس درهم ریختگی برو.