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 - آرایه‌ها (Arrays)

JavaScript – آرایه‌ها (Arrays)

آرایه در جاوااسکریپت متغیری خاص است که می‌تواند بیش از یک مقدار را ذخیره کند. const cars = ["Saab",...

بیشتر بخوانید
JavaScript - ویژگی‌های عدد (Number Properties)

JavaScript – ویژگی‌های عدد (Number Properties)

در جاوااسکریپت، شیء Number شامل ویژگی‌هایی از پیش تعریف‌شده است که برای کار با اعداد مفید هستند. این ویژگی‌ها...

بیشتر بخوانید
JavaScript - متدهای عدد (Number Methods)

JavaScript – متدهای عدد (Number Methods)

در جاوا اسکریپت، متدهایی برای کار با اعداد ارائه شده‌اند که می‌توانند روی تمامی اعداد استفاده شوند. متدهای مربوط...

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

نظرات

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

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