অনেক সময় আমরা ডেটা স্মুথিং নামে একটি মেথড ব্যবহার করি যাতে ডেটা সঠিক ও গুণমানযুক্ত হয় পরিসংখ্যানিক বিশ্লেষণের জন্য। স্মুথিং প্রসেসের সময় আমরা একটি রেঞ্জ ডিফাইন করি যাকে বিন (bin) বলা হয় এবং রেঞ্জের ভিতরে যেকোনো ডেটা ভ্যালুকে সেই বিনে ফিট করা হয়। এটিকে বিনিং মেথড বলা হয়। নিচে বিনিং-এর একটি উদাহরণ দেওয়া হলো। তারপর আমরা দেখব কিভাবে পাইথন প্রোগ্রাম দিয়ে বিনিং মেথড বাস্তবায়ন করা যায়।
বিনিং উদাহরণ
চলুন একটি সংখ্যা সিরিজ নিই। সর্বোচ্চ ও ন্যূনতম মান বের করুন। বিশ্লেষণের প্রয়োজন অনুযায়ী কতগুলো বিন দরকার সেটি ঠিক করুন। এই গ্রুপগুলো তৈরি করুন এবং প্রতিটি সংখ্যাকে এই গ্রুপগুলোতে বরাদ্দ করুন। উপরের মান বাদ দেওয়া হয় এবং পরবর্তী গ্রুপে পড়ে।
উদাহরণ
Given numbers: 12, 32, 10, 17, 19, 28, 22, 26, 29,16 Number of groups : 4 Here Max Value: 32 Min Value: 10 So the groups are – (10-15), (15-21), (21-27), (27-32)
আউটপুট
বিনে সংখ্যাগুলো রাখলে নিচের ফলাফল পাওয়া যায়:
12 -> (10-15) 32 -> (27-32) 10 -> (10-15) 17 -> (15-21) 19 -> (15-21) 28 -> (27-32) 22 -> (21-27) 26 -> (21-27) 29 -> (27-32) 16 -> (15-21)
বিনিং প্রোগ্রাম
এই প্রোগ্রামে আমরা দুটি ফাংশন ডিফাইন করব। একটি বিন তৈরি করার জন্য নিম্ন ও সর্বোচ্চ সীমা নির্ধারণ করে। অন্যটি ইনপুট ভ্যালুগুলোকে প্রতিটি বিনে বরাদ্দ করার জন্য। প্রতিটি বিনও একটি ইনডেক্স পাবে। আমরা দেখব কিভাবে প্রতিটি ইনপুট ভ্যালু বিনে বরাদ্দ হয় এবং একটি নির্দিষ্ট বিনে কতগুলো ভ্যালু গিয়েছে তা ট্র্যাক করব।
উদাহরণ
from collections import Counter
def Binning_method(lower_bound, width, quantity):
binning = []
for low in range(lower_bound, lower_bound + quantity * width + 1, width):
binning.append((low, low + width))
return binning
def bin_assign(v, b):
for i in range(0, len(b)):
if b[i][0] <= v < b[i][1]:
return i
the_bins = Binning_method(lower_bound=50, width=4, quantity=10)
print("The Bins: \n", the_bins)
weights_of_objects = [89.2, 57.2, 63.4, 84.6, 90.2, 60.3, 88.7, 65.2, 79.8, 80.2, 93.5, 79.3, 72.5, 59.2, 77.2, 67.0, 88.2, 73.5]
print("\nBinned Values:\n")
binned_weight = []
for val in weights_of_objects:
index = bin_assign(val, the_bins)
print(val, "-with index-", index, ":", the_bins[index])
binned_weight.append(index)
freq = Counter(binned_weight)
print("\nCount of values in each index: ")
print(freq)
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের ফলাফল পাওয়া যায়:
The Bins: [(50, 54), (54, 58), (58, 62), (62, 66), (66, 70), (70, 74), (74, 78), (78, 82), (82, 86), (86, 90), (90, 94)]
Binned Values:
89.2 -with index- 9 : (86, 90)
57.2 -with index- 1 : (54, 58)
63.4 -with index- 3 : (62, 66)
84.6 -with index- 8 : (82, 86)
90.2 -with index- 10 : (90, 94)
60.3 -with index- 2 : (58, 62)
88.7 -with index- 9 : (86, 90)
65.2 -with index- 3 : (62, 66)
79.8 -with index- 7 : (78, 82)
80.2 -with index- 7 : (78, 82)
93.5 -with index- 10 : (90, 94)
79.3 -with index- 7 : (78, 82)
72.5 -with index- 5 : (70, 74)
59.2 -with index- 2 : (58, 62)
77.2 -with index- 6 : (74, 78)
67.0 -with index- 4 : (66, 70)
88.2 -with index- 9 : (86, 90)
73.5 -with index- 5 : (70, 74)
Count of values in each index: Counter({9: 3, 7: 3, 3: 2, 10: 2, 2: 2, 5: 2, 1: 1, 8: 1, 6: 1, 4: 1})