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

نتایج مختلف

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

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

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

نظرات

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

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