Python – درخت تصمیمگیری (Decision Tree)
درخت تصمیم (Decision Tree)
درخت تصمیم یک نمودار جریان است که میتواند به شما کمک کند تصمیمات را بر اساس تجربیات قبلی بگیرید. به عنوان مثال، اگر بخواهید تصمیم بگیرید که آیا باید به یک نمایش کمدی بروید یا نه، درخت تصمیم میتواند به شما کمک کند.
در این مثال، اطلاعاتی درباره کمدینها و تصمیمات افراد برای رفتن به نمایشهای کمدی جمعآوری شده است. ما میخواهیم با استفاده از این دادهها درخت تصمیم بسازیم تا بتوانیم پیشبینی کنیم که آیا نمایشهای جدید ارزش دیدن دارند یا خیر.
چطور کار میکند؟
ابتدا باید دادهها را با استفاده از pandas بخوانید:
مثال:
import pandas as pd
df = pd.read_csv("data.csv")
print(df)
برای ساخت درخت تصمیم، باید دادهها به صورت عددی باشند. باید ستونهای غیر عددی مانند Nationality
و Go
را به مقادیر عددی تبدیل کنیم.
تبدیل مقادیر غیر عددی به عددی:
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)
سپس باید ستونهای ویژگیها را از ستون هدف جدا کنیم. ستونهای ویژگیها (features) شامل دادههایی هستند که میخواهیم بر اساس آنها پیشبینی کنیم، و ستون هدف (target) ستونی است که میخواهیم پیشبینی کنیم.
تفکیک ویژگیها و هدف:
features = ['Age', 'Experience', 'Rank', 'Nationality']
X = df[features]
y = df['Go']
print(X)
print(y)
اکنون میتوانیم درخت تصمیم واقعی را بسازیم و آن را با دادههای خود تنظیم کنیم. ابتدا ماژولهای مورد نیاز را وارد کنید:
ساخت و نمایش درخت تصمیم:
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
df = pd.read_csv("data.csv")
d = {'UK': 0, 'USA': 1, 'N': 2}
df['Nationality'] = df['Nationality'].map(d)
d = {'YES': 1, 'NO': 0}
df['Go'] = df['Go'].map(d)
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()
توضیح نتایج
درخت تصمیم از تصمیمات قبلی برای محاسبه شانس شما برای رفتن به نمایش کمدی استفاده میکند. بیایید جنبههای مختلف درخت تصمیم را بررسی کنیم:
-
Rank: اگر
Rank <= 6.5
باشد، کمدینها با رتبه 6.5 یا پایینتر به سمت چپ میروند و بقیه به سمت راست میروند. Gini = 0.497 نشاندهنده کیفیت تقسیم است، که همیشه عددی بین 0.0 و 0.5 است. -
گینی (Gini): گینی روش تقسیم دادهها را ارزیابی میکند. فرمول گینی به صورت زیر است:
Gini = 1 - (x/n)² - (y/n)²
-
که در آن x تعداد پاسخهای مثبت (“GO”)، n تعداد کل نمونهها و y تعداد پاسخهای منفی (“NO”) است.
-
مرحله بعد: دادهها به دو گروه تقسیم میشوند. گروهی که دارای
Rank
کمتر از 6.5 است و گروهی کهRank
بالاتر از 6.5 دارد.
پیشبینی مقادیر
حالا میتوانیم از درخت تصمیم برای پیشبینی مقادیر جدید استفاده کنیم.
مثال: آیا باید به یک نمایش با کمدین 40 ساله، آمریکایی با 10 سال تجربه و رتبه کمدی 7 برویم؟
print(dtree.predict([[40, 10, 7, 1]]))
مثال: نتیجه چه میشود اگر رتبه کمدی 6 باشد؟
print(dtree.predict([[40, 10, 6, 1]]))
نتایج مختلف
ممکن است با اجرای مکرر درخت تصمیم، نتایج متفاوتی ببینید، حتی اگر دادههای ورودی یکسان باشند. این به دلیل این است که درخت تصمیم بر اساس احتمال نتایج عمل میکند و پاسخها میتواند متغیر باشد.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام