কম্পিউটার

পাইথনে ডেটা মসৃণ করার জন্য বিনিং পদ্ধতি


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

বিনিং উদাহরণ

সংখ্যার একটি সিরিজ নেওয়া যাক। সর্বাধিক এবং সর্বনিম্ন মান খুঁজুন। বিশ্লেষণের জন্য কতগুলি ডেটা পয়েন্ট প্রয়োজন তার উপর নির্ভর করে আমাদের প্রয়োজনীয় বিনের সংখ্যা নির্ধারণ করুন। এই গোষ্ঠীগুলি তৈরি করুন এবং এই গোষ্ঠীগুলিতে এই সংখ্যাগুলির প্রতিটি বরাদ্দ করুন৷ উপরের মানটি বাদ দেওয়া হয়েছে এবং পরবর্তী গ্রুপের অন্তর্গত৷

উদাহরণ

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, index, binning[index])
   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})

  1. পাইথনে Tkinter বোতামের জন্য কমান্ড পদ্ধতি পরিবর্তন করুন

  2. Python - পান্ডাস .query() পদ্ধতির সাহায্যে ডেটা ফিল্টার করা

  3. পাইথনে পরিসংখ্যানগত চিন্তাভাবনা

  4. পাইথনে সেন্সাস ডেটা বিশ্লেষণ করা হচ্ছে