কম্পিউটার টিউটোরিয়াল

পাইথনে ডিসিশন ট্রি ব্যবহার করে রিগ্রেসর কীভাবে বাস্তবায়ন করবেন?


ডিসিশন ট্রি র‍্যান্ডম ফরেস্ট অ্যালগরিদমের মৌলিক উপাদান। এটি মেশিন লার্নিং-এ সবচেয়ে জনপ্রিয় অ্যালগরিদমের একটি এবং ক্লাসিফিকেশনের জন্য ব্যবহৃত হয়। ডিসিশন ট্রি যা সিদ্ধান্ত দেয়, সেটি ব্যাখ্যা করতে পারে কেন একটি নির্দিষ্ট ভবিষ্যদ্বাণী করা হয়েছে। এর মানে প্রক্রিয়ার ইনপুট-আউটপুট ব্যবহারকারীকে স্পষ্ট থাকে। এটিকে CART (Classification And Regression Trees) ও বলা হয়। এটি একটি বাইনারি ট্রি হিসেবে কল্পনা করা যায় (ডেটা স্ট্রাকচার ও অ্যালগরিদমে যা পড়া হয়)।

ট্রির প্রতিটি নোড একটি ইনপুট ভেরিয়েবল প্রকাশ করে, এবং লিফ নোডها (টার্মিনাল নোড) আউটপুট ভেরিয়েবল ধারণ করে। এই লিফ নোডগুলো ব্যবহার করে ভবিষ্যদ্বাণী করা হয়। ডিসিশন ট্রি তৈরি করার সময় মৌলিক ধারণা হলো দেওয়া স্পেসকে একাধিক সেকশনে ভাগ করা। সকল মানগুলো রেখে ভিন্ন-भিন্ন Сп্লিট চেষ্টা করা হয় যাতে কম খরচ ও সেরা ভবিষ্যদ্বাণী মান পাওয়া যায়। এই মানগুলো লোভী পদ্ধতিতে (greedy manner) বেছে নেওয়া হয়।

নোড স্প্লিটিং ট্রির সর্বোচ্চ গভীরতা পাওয়া পর্যন্ত চলতে থাকে। ডিসিশন ট্রি ব্যবহার করার লক্ষ্য হলো ইনপুট ডেটাসেটকে নির্দিষ্ট ফিচার ভ্যালুয়ের ভিত্তিতে ছোট ছোট ডেটাসেটে ভাগ করা, যতক্ষণ না প্রতিটি টার্গেট ভেরিয়েবল একক ক্যাটাগরির অধীনে পড়ে। এই স্প্লিটটি প্রতিটি ধাপে সর্বোচ্চ ইনফরমেশন গেইন পাওয়ার জন্য করা হয়।

প্রতিটি ডিসিশন ট্রি একটি রুট দিয়ে শুরু হয়, যেখানে প্রথম স্প্লিট হয়। নোডها কার্যকরভাবে সংজ্ঞায়িত করার জন্য একটি দক্ষ পদ্ধতি প্রয়োজন। এখানেই জিনি ভ্যালু (Gini value) কাজে লাগে। জিনি অসমতা মাপার সবচেয়ে সাধারণ মাপদণ্ড। অসমতা বলতে টার্গেট ক্লাস (আউটপুট) বোঝায়, যেটি একটি নোডের প্রতিটি সাবসেটের হতে পারে।

DecisionTreeRegressor ব্যবহার করার সিনট্যাক্স নিচে দেওয়া হলো:

class sklearn.tree.DecisionTreeRegressor (*, criterion='mse', ...)

DecisionTreeRegressor কীভাবে ব্যবহার করা যায় তা নিচে দেখানো হলো:

উদাহরণ

from sklearn import tree

my_data = [[1, 1], [5, 5], [2, 3], [7, 11]]
target_vals = [0.1, 1.5, 0.75, 1.73]

clf = tree.DecisionTreeRegressor()
print("ডিসিশন ট্রি রিগ্রেসর কল করা হয়েছে")
DTreg = clf.fit(my_data, target_vals)
print("ডেটা ফিট করা হয়েছে")

pred_val = DTreg.predict([[4, 7]])
print("ভবিষ্যদ্বাণী করা ডেটা:")
print(pred_val)

আউটপুট

ডিসিশন ট্রি রিগ্রেসর কল করা হয়েছে
ডেটা ফিট করা হয়েছে
ভবিষ্যদ্বাণী করা ডেটা: [1.5]

ব্যাখ্যা

  • প্রয়োজনীয় প্যাকেজগুলো এনভায়রনমেন্টে ইম্পোর্ট করা হয়েছে।
  • ফিচার ভেক্টর এবং টার্গেট মান সংজ্ঞায়িত করা হয়েছে।
  • DecisionTreeRegressor কল করা হয়েছে এবং ডেটা মডেলে ফিট করা হয়েছে।
  • predict ফাংশন ব্যবহার করে ফিচার মানগুলোর জন্য ভবিষ্যদ্বাণী করা হয়েছে।
  • আউটপুট কনসোলে প্রদর্শন করা হয়েছে।
  1. পাইথনে Bokeh ব্যবহার করে বার প্লট ভিজ্যুয়ালাইজ করার পদ্ধতি

  2. পাইথনে Bokeh ব্যবহার করে প্যাচ প্লট (Patch Plot) জেনারেট করার পদ্ধতি

  3. পাইথনে Bokeh ব্যবহার করে সাইনাসয়েডাল ভেত (Sinusoidal Wave) জেনারেট করার পদ্ধতি

  4. Python-এ Matplotlib ব্যবহার করে হিস্টোগ্রাম কীভাবে তৈরি করা যায়?