Python資料平滑的Binning方法
在進行統計分析時,我們經常使用一種稱為資料平滑的方法來使資料更規範、更定性。在平滑過程中,我們定義一個範圍,也稱為bin(箱),並將該範圍內任何資料值都放入該bin中。這稱為binning方法。下面是一個binning的示例,然後我們將看到如何使用Python程式實現binning方法。
Binning示例
讓我們取一系列數字。找到最大值和最小值。根據分析需要多少資料點來決定我們需要多少個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)
輸出
將數字放入bin後,我們得到以下結果:
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)
Binning程式
對於此程式,我們定義了兩個函式。一個函式用於透過定義上限和下限來建立bin。另一個函式是將輸入值分配給每個bin。每個bin也獲得一個索引。我們檢視每個輸入值如何分配給bin,並跟蹤有多少值進入特定bin。
示例
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})
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP