فیصلہ کرنے والے درخت ایک دوسرے سے جڑے ہوئے ہیں اور ایک دوسرے کے ساتھ ساتھ ساتھ کلاس اور ان کی مرمت کے لئے مشین سیکھنے کے لئے مختلف طریقے ہیں. وہ معلومات کو انتہائی اہم اقدار پر مبنی شاخوں میں تقسیم کرتے ہیں،

ایک فیصلہ‌کُن درخت کیا ہے ؟

ایک فیصلہ‌کُن درخت ایک ایسا ترکیب ہے جہاں ہر اندرونی حصے میں ایک امتحان کی نمائندگی کرتا ہے (جیسے کہ ” ہماری عمر ۳۰ سال ہے) ۔

درخت کو دوبارہ تعمیر کِیا جاتا ہے : جڑ سے شروع ہونے والا ، الموت سب سے بہترین خصوصیت اور تقسیم‌شُدہ نقطہ انتخاب کرتا ہے جو ڈیٹا کو نہایت صاف‌وغریب طور پر الگ کرتا ہے ۔

کو دیکھیں

نودی، شاخ اور ترک ہیں۔

جڑے ہوئے پلگ انس میں مکمل تربیتی ڈیٹا سیٹ موجود ہے اندرونی نظاموں میں ایک خصوصیت کو جانچ کر ڈیٹا کو دو یا دو سے زائد بچے کے حساب میں تقسیم کر کے تقسیم کراتے ہیں۔بُکُکُن وہ تعلقات ہیں جو کسی ٹیسٹ کے نتائج کی نمائندگی کرتے ہیں۔ Leaf Goss (councils) on the آخری مفروضات – کلاس میں سب سے زیادہ عام مقدار میں کمی یا مقدار کے معنی کی مقدار حاصل کرتے ہیں۔

کریتی‌شیا

درخت کی تعمیر کے لیے ممکنہ تقسیم کی کیفیت کا اندازہ لگانے کے لیے ایک طریقہ درکار ہے. سب سے عام معیار یہ ہیں:

  • Gini sque [ – کلاس میں استعمال ہونے والا استعمال کیا جاتا ہے تاکہ اندازہ لگایا جاسکے کہ اگر اکثر انتخابی عناصر کو زیریں طبقوں کی تقسیم کے مطابق نامزد کیا جاتا تو اس کا نامناسب رکھا جاتا ہے. Lower Gni بہتر ہے۔
  • Entropy – کسی سیٹ میں موجود اضطراب یا غیر یقینی کی مقدار کا اندازہ لگانا. تقسیم کے بعد سے مراد تقسیم (formation active) کے بعد entropy کی ہوتی ہے۔
  • Variance کمی – استعمال شدہ درختوں کے لیے استعمال ہونے والا استعمال۔ یہ تقسیم سے مراد فرق (یا معنی مربع غلطی) ہے۔

الجبرا ہر ممکنہ طور پر ہر ممکنہ فرق کا تجزیہ کرتا ہے اور وہ چیز وصول کرتا ہے جو گندھک میں سب سے بڑی کمی (یا معلومات میں حاصل ہونے والی آمدنی) کو جنم دیتا ہے۔

معلومات گین اور گیس کی جگہ

معلومات حاصل کرنا والدین کے آلودہ ہونے اور بچوں کی وزنی کمی میں فرق ہے ۔ جب کہ معمولی مقدار میں مقبولیت حاصل کرنا بہت زیادہ ہوتا ہے ۔

ایک فیصلہ‌کُن درخت کی اُونچائی بنانا

1۔ اپنی معلومات تیار کرو۔

آپ کو خصوصیات اور ہدف لیبل کے ساتھ اعداد و شمار کی ضرورت ہے۔ سادگی کے لیے بینری کلاسی شناختی ڈیٹا سیٹ استعمال کریں نُمْرِک خصوصیات کے ساتھ. مثال کے طور پر:

  • [Features: عمر، انکم (انگریزی: Eye, Incom) ریاستہائے متحدہ امریکا کا ایک رہائشی علاقہ جو اناطولیہ میں واقع ہے۔
  • [Target: [1] [1] یا Not not settlement (0])۔

اعداد و شمار : گم شدہ اقدار کو ختم کرنا، اناطولیہ کو دور کرنا اور اسے یقینی بنانا۔ فیصل درخت مخلوط ڈیٹا اقسام کو حل کر سکتے ہیں لیکن ہم عملے کے لیے نیوٹریۃ تک محدود رہیں گے۔

۲ : ایک دوسرے کی قدر کریں

ہم جنی نجاستوں پر عمل کریں گے.

جہاں پی پی اے کلاس میں موجود چیزوں کا تناسب ہوتا ہے یعنی بین الاقومی تقسیم کے لیے مجموعی جین اس کے بچے کی اوسط وزنی مقدار ہے۔

3۔ سپلٹی ایوارڈ حاصل کرنا۔

ہر ایک امیدوار کی فہرست کو بائیں اور دائیں گروہوں میں تقسیم کرنا ، جینی کو شمار کرنا اور سب سے بہتر فرق کو سمجھنا

۴ : درخت کو دوبارہ تعمیر کریں

ایسا عمل بنائیں جو اعداد و شمار کے ذیلی نصف مرتبے اور موجودہ گہرائیوں کا احاطہ کرے گا۔ یہ انتہائی گہرائی تک پہنچ جاتا ہے، کم از کم گہرائی میں پہنچ گیا ہے، ورنہ کوئی شرط پوری ہو جائے تو پتے کا بٹن اکثریتی کلاس کے ساتھ تخلیق کر نے کے ليے فاعل کو بہتر طور پر تقسیم کر نے کے ليے اور اندرونی اصل ميں کچھ حصے کو ایجاد کريں پھر اس کے بعد با ئيں اور اختلافی طور پر عمل نامزد کريں

5۔ امانتیں بنائیں

جب درخت کی تعمیر کی جاتی ہے تو یہ بہت واضح ہے : جڑ سے شروع کریں ، نئی مثالوں پر ٹیسٹ کرنے سے شاخوں کی پیروی کریں اور پھر آپ کے پتے پر حاصل ہونے والی مقدار کو واپس کر دیں ۔

پافوس میں مکمل شمولیت

نیچے ایک مکمل، فیصلہ کن درخت کا اطلاق ہے جس میں جنی نجاست استعمال کی گئی ہے یہ کوڈ سیکھنے کے لیے ہے –

import numpy as np
from collections import Counter

class DecisionTree:
 def __init__(self, max_depth=None, min_samples_split=2):
 self.max_depth = max_depth
 self.min_samples_split = min_samples_split
 self.tree = None

 def fit(self, X, y):
 dataset = np.column_stack((X, y))
 self.tree = self._grow_tree(dataset)

 def _grow_tree(self, dataset, depth=0):
 X, y = dataset[:, :-1], dataset[:, -1]
 n_samples, n_features = X.shape
 n_labels = len(np.unique(y))

 # Stopping conditions
 if (n_labels == 1 or depth == self.max_depth or n_samples < self.min_samples_split):
 leaf_value = Counter(y).most_common(1)[0][0]
 return {'leaf': True, 'value': leaf_value}

 best_feature, best_threshold = self._best_split(dataset, n_features)
 if best_feature is None:
 leaf_value = Counter(y).most_common(1)[0][0]
 return {'leaf': True, 'value': leaf_value}

 left_idx, right_idx = self._split(dataset[:, best_feature], best_threshold)
 left_subtree = self._grow_tree(dataset[left_idx], depth+1)
 right_subtree = self._grow_tree(dataset[right_idx], depth+1)
 return {'leaf': False,
 'feature': best_feature,
 'threshold': best_threshold,
 'left': left_subtree,
 'right': right_subtree}

 def _best_split(self, dataset, n_features):
 best_gini = float('inf')
 best_feature, best_threshold = None, None
 for feature in range(n_features):
 thresholds = np.unique(dataset[:, feature])
 for i in range(len(thresholds)-1):
 thresh = (thresholds[i] + thresholds[i+1]) / 2
 left_idx, right_idx = self._split(dataset[:, feature], thresh)
 if len(left_idx) == 0 or len(right_idx) == 0:
 continue
 gini = self._gini_gain(dataset, left_idx, right_idx)
 if gini < best_gini:
 best_gini = gini
 best_feature = feature
 best_threshold = thresh
 return best_feature, best_threshold

 def _split(self, values, threshold):
 left_idx = np.where(values <= threshold)[0]
 right_idx = np.where(values > threshold)[0]
 return left_idx, right_idx

 def _gini_gain(self, dataset, left_idx, right_idx):
 total = len(left_idx) + len(right_idx)
 gini_left = self._gini(dataset[left_idx, -1])
 gini_right = self._gini(dataset[right_idx, -1])
 return (len(left_idx)/total) * gini_left + (len(right_idx)/total) * gini_right

 def _gini(self, labels):
 _, counts = np.unique(labels, return_counts=True)
 p = counts / np.sum(counts)
 return 1 - np.sum(p**2)

 def predict(self, X):
 return np.array([self._predict_row(x, self.tree) for x in X])

 def _predict_row(self, x, node):
 if node['leaf']:
 return node['value']
 if x[node['feature']] <= node['threshold']:
 return self._predict_row(x, node['left'])
 else:
 return self._predict_row(x, node['right'])

درخت کا ٹیسٹ

ایک سادہ ڈیٹا سیٹ استعمال کریں جیسے کلاسیکی کمپیوٹر ڈیٹا بیس ( بینری کلاسز کی شناخت کے لیے دو خصوصیات). [scicit ⁇ s mirits dataset. کام.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

data = load_iris()
X = data.data[:100] # take only first two classes (binary)
y = data.target[:100]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

tree = DecisionTree(max_depth=3)
tree.fit(X_train, y_train)
preds = tree.predict(X_test)
accuracy = np.mean(preds == y_test)
print(f'Accuracy: {accuracy:.2f}')

درخت کو دوبارہ سے صاف کرنے کیلئے زیادہ‌تر تکنیک

حد سے زیادہ شراب پینے سے گریز کرنا

تربیتی ڈیٹا میں مکمل طور پر ترقی یافتہ درخت شور مچا سکتا ہے جس کی چھوٹی سی پیشینگوئیوں کو پورا کرنے والی شاخیں ختم کر سکتی ہیں۔عام طریقوں سے پہلے سے ترقی (FLT:4 ) یا اور پوسٹ اپنگ (FLT) سے جڑے ہوئے شاخیں بنانے کے لیے ہمارا کام پہلے سے ہی استعمال کرنا ہے۔

ہاتھ دھونا اور کیٹ‌ورکل کی یادوں

مسلسل خصوصیات کے لیے ہم نے مختلف اقسام کے درمیان درمیان میں ایک دوسرے کے لیے استعمال کیا جیسے کہ "Color = سرخ/ سبز/wood" (مثلاً ہر ایک کی خصوصیات)، ہر ایک الگ شاخ (مُٹّلّیّے / سبز) بن سکتی ہیں یا پھر آپ binary ⁇ encode بن سکتے ہیں. زیادہ تر جدید عمل آوری (جیسے skit ⁇ strict) تمام صوبوں کے ذریعے بینکاری کے لیے بھی استعمال کی جاتی ہے۔

گم شدہ اقدار سے متعلقه

ایک سادہ طریقہ یہ ہے کہ تربیتی اداروں میں سب سے زیادہ وقت ضائع ہونے والی اقدار کو اُجاگر کریں ۔

لائبریریوں اور مزید پڑھائی سے بھرپور فائدہ اُٹھانا

اگرچہ نقل‌مکانی کرنے کے نظام تعلیمی ہیں توبھی پیداواری نظاموں میں نقل‌مکانی کرنے والی لائبریریز استعمال کرتے ہیں جیسے کہ قابلِ‌بھروسا کام انجام دینے والی لائبریریز ۔

کُنَّا

آپ نے سیکھا ہے کہ کیسے سادہ سا ری ایکٹر ایک ماڈل بنا سکتا ہے ۔