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

نتایج مختلف

ممکن است با اجرای مکرر درخت تصمیم، نتایج متفاوتی ببینید، حتی اگر داده‌های ورودی یکسان باشند. این به دلیل این است که درخت تصمیم بر اساس احتمال نتایج عمل می‌کند و پاسخ‌ها می‌تواند متغیر باشد.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.