Computer >> Máy Tính >  >> Lập trình >> Python

Phương pháp thùng rác để làm mịn dữ liệu trong Python

Nhiều khi chúng tôi sử dụng một phương pháp được gọi là làm mịn dữ liệu để làm cho dữ liệu phù hợp và định tính cho phân tích thống kê. Trong quá trình hun khói, chúng tôi xác định một phạm vi còn được gọi là bin và bất kỳ giá trị dữ liệu nào trong phạm vi được thực hiện để vừa với thùng. Đây được gọi là phương pháp binning. Dưới đây là một ví dụ về binning. Sau đó, chúng ta sẽ xem cách chúng ta có thể đạt được phương thức binning bằng chương trình Python.

Ví dụ về thùng rác

Hãy lấy một loạt các con số. Tìm giá trị lớn nhất và nhỏ nhất. Quyết định số lượng thùng chúng ta cần tùy thuộc vào bao nhiêu điểm dữ liệu mà phân tích cần. Tạo các nhóm này và gán từng số này cho các nhóm này. Giá trị trên bị loại trừ và thuộc về nhóm tiếp theo.

Ví dụ

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)

Đầu ra

Khi đưa các con số vào thùng, chúng tôi nhận được kết quả sau -

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)

Chương trình thùng rác

Đối với chương trình này, chúng tôi xác định hai chức năng. Một để tạo thùng bằng cách xác định giới hạn trên và giới hạn dưới. Chức năng khác là gán các giá trị đầu vào cho mỗi thùng. Mỗi thùng cũng nhận được một chỉ mục. Chúng tôi xem từng giá trị đầu vào được gán cho thùng như thế nào và theo dõi có bao nhiêu giá trị được chuyển đến một thùng cụ thể.

Ví dụ

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)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

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})