بصری سازی یک درخت تصمیم از جنگل تصادفی در پایتون با Scikit–Learn – از صفر تا صد

from sklearn.datasets import load_iris
iris = load_iris()
# Model (can also use single decision tree)
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=10)
# Train
model.fit(iris.data, iris.target)
# Extract single tree
estimator = model.estimators_[5]
from sklearn.tree import export_graphviz
# Export as dot file
export_graphviz(estimator, out_file='tree.dot',
feature_names = iris.feature_names,
class_names = iris.target_names,
rounded = True, proportion = False,
precision = 2, filled = True)
# Convert to png using system command (requires Graphviz)
from subprocess import call
call(['dot', '-Tpng', 'tree.dot', '-o', 'tree.png', '-Gdpi=600'])
# Display in jupyter notebook
from IPython.display import Image
Image(filename = 'tree.png')
نتیجه نهایی درخت تصمیم کامل به صورت یک تصویر خواهد بود:

توضیح کد
ابتدا یک آموزش و استخراج مدل ایجاد میکنیم.
میتوان از یک درخت تصمیم منفرد نیز استفاده کرد؛ اما از آنجا که از جنگل تصادفی برای مدلسازی استفاده شده است، در این مثال از آن بهره میگیریم. در واقع درختها تا حدودی متفاوت از هم هستند.
from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(n_estimators=10) # Train model.fit(iris.data, iris.target) # Extract single tree estimator = model.estimators_[5]
from sklearn.tree import export_graphviz # Export as dot file export_graphviz(estimator_limited, out_file='tree.dot', feature_names = iris.feature_names, class_names = iris.target_names, rounded = True, proportion = False, precision = 2, filled = True)
# Convert to png from subprocess import call call(['dot', '-Tpng', 'tree.dot', '-o', 'tree.png', '-Gdpi=600'])
بصریسازی. بهترین بصریسازیها در نتبوک ژوپیتر ظاهر میشوند. به طور معادل میتوان از matplotlib برای نمایش تصاویر استفاده کرد.
# Display in jupyter notebook from IPython.display import Image Image(filename = 'tree.png')
ملاحظات
به کمک جنگل تصادفی، هر درخت به صورت مجزایی ساخته میشود. از این تصاویر برای نمایش استدلالی که در پس درخت تصمیم قرار دارد استفاده میکنید و متعاقباً منطق جنگل تصادفی مشخص میشود و دیگر نیازی به مشاهده جزییات خاص نیست.
محدودسازی بیشینه عمق در مواردی که ویژگیهای زیادی وجود دارند مفید خواهد بود، چون در غیر این صورت با درختان بزرگی مواجه میشوید که درهمتنیده هستند و هیچ تفسیری نمیتوان از آن داشت. در تصویر زیر نمونه کاملی با 50 ویژگی را مشاهده میکنید.

سخن پایانی
یادگیری ماشین از مسئله «جعبه سیاه» (Black Box) رنج میبرد، یعنی یک تصویر منفرد نمیتواند مشکلی را حل کند. در هر حال نگاه کردن به یک درخت منفرد تصمیم این مدل را به ما نشان میدهد و یک جنگل تصادفی متدی غیر قابل توضیح نیست؛ اما توالی سؤالهای منطقی و پاسخها به خصوص زمانی که پیشبینی صورت میگیرد یک مشکل محسوب میشود.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- مجموعه آموزش های داده کاوی یا Data Mining در متلب
- مجموعه آموزشهای هوش محاسباتی
- الگوریتم جنگل تصادفی (Random Forest) — راهنمای جامع و کاربردی
- آموزش ساختمان داده ها
- پیش بینی ریزش مشتریان با داده کاوی و R — راهنمای جامع
==
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













