Hướng dẫn binning python - con trăn binning
Bởi Bernd Klein. Sửa đổi lần cuối: 24 tháng 3 năm 2022.Bernd Klein. Last modified: 24 Mar 2022. Show Trên trang này➤ Giới thiệuBánh dữ liệu, còn được gọi là xô hoặc rời rạc, là một kỹ thuật được sử dụng trong xử lý dữ liệu và thống kê. Binning có thể được sử dụng ví dụ, nếu có nhiều điểm dữ liệu có thể hơn các điểm dữ liệu được quan sát. Một ví dụ là chia chiều cao cơ thể của mọi người thành các khoảng hoặc loại. Chúng ta hãy giả sử, chúng ta có độ cao của 30 người. Các giá trị chiều dài có thể nằm trong khoảng thời gian dự đoán khoảng 1,30 mét đến 2,50 mét. Về mặt lý thuyết, có 120 giá trị CM khác nhau có thể, nhưng chúng ta có thể có tối đa 30 giá trị khác nhau từ nhóm mẫu của chúng tôi. Một cách để nhóm chúng có thể là đặt các giá trị đo vào các thùng dao động từ 1,30 - 1,50 mét, 1,50 - 1,70 mét, 1,70 - 1,90 mét, v.v. Điều này có nghĩa là các giá trị dữ liệu gốc, sẽ được gán cho một thùng vào wich mà chúng phù hợp theo kích thước của chúng. Các giá trị ban đầu sẽ được thay thế bằng các giá trị đại diện cho các khoảng tương ứng. Binning là một hình thức lượng tử hóa. Các thùng không nhất thiết phải là số, chúng có thể là các giá trị phân loại dưới bất kỳ hình thức nào, như "chó", "mèo", "chuột đồng", v.v. Binning cũng được sử dụng trong xử lý hình ảnh, Binning. Nó có thể được sử dụng để giảm lượng dữ liệu, bằng cách kết hợp pixel lân cận thành các pixel đơn. KXK Binning làm giảm các khu vực của K x K pixel thành pixel đơn. Pandas cung cấp các cách dễ dàng để tạo thùng và dữ liệu thùng. Trước khi chúng tôi mô tả các chức năng gấu trúc này, chúng tôi sẽ giới thiệu các chức năng Python cơ bản, làm việc trên danh sách và bộ dữ liệu Python. Binning trong PythonHàm Python sau đây có thể được sử dụng để tạo thùng. def create_bins(lower_bound, width, quantity): """ create_bins returns an equal-width (distance) partitioning. It returns an ascending list of tuples, representing the intervals. A tuple bins[i], i.e. (bins[i][0], bins[i][1]) with i > 0 and i < quantity, satisfies the following conditions: (1) bins[i][0] + width == bins[i][1] (2) bins[i-1][0] + width == bins[i][0] and bins[i-1][1] + width == bins[i][1] """ bins = [] for low in range(lower_bound, lower_bound + quantity*width + 1, width): bins.append((low, low+width)) return bins Chúng tôi sẽ tạo bây giờ năm thùng (số lượng = 5) với chiều rộng 10 (chiều rộng = 10) bắt đầu từ 10 (Lower_bound = 10): bins = create_bins(lower_bound=10, width=10, quantity=5) bins OUTPUT:[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)] Hàm tiếp theo 'find_bin' được gọi với một danh sách hoặc tuple của thùng 'thùng', phải là hai bộ phận hoặc danh sách của hai yếu tố. Hàm tìm chỉ mục của khoảng, trong đó có giá trị 'giá trị': def find_bin(value, bins): """ bins is a list of tuples, like [(0,20), (20, 40), (40, 60)], binning returns the smallest index i of bins so that bin[i][0] <= value < bin[i][1] """ for i in range(0, len(bins)): if bins[i][0] <= value < bins[i][1]: return i return -1 from collections import Counter bins = create_bins(lower_bound=50, width=4, quantity=10) print(bins) weights_of_persons = [73.4, 69.3, 64.9, 75.6, 74.9, 80.3, 78.6, 84.1, 88.9, 90.3, 83.4, 69.3, 52.4, 58.3, 67.4, 74.0, 89.3, 63.4] binned_weights = [] for value in weights_of_persons: bin_index = find_bin(value, bins) print(value, bin_index, bins[bin_index]) binned_weights.append(bin_index) frequencies = Counter(binned_weights) print(frequencies) OUTPUT:[(50, 54), (54, 58), (58, 62), (62, 66), (66, 70), (70, 74), (74, 78), (78, 82), (82, 86), (86, 90), (90, 94)] 73.4 5 (70, 74) 69.3 4 (66, 70) 64.9 3 (62, 66) 75.6 6 (74, 78) 74.9 6 (74, 78) 80.3 7 (78, 82) 78.6 7 (78, 82) 84.1 8 (82, 86) 88.9 9 (86, 90) 90.3 10 (90, 94) 83.4 8 (82, 86) 69.3 4 (66, 70) 52.4 0 (50, 54) 58.3 2 (58, 62) 67.4 4 (66, 70) 74.0 6 (74, 78) 89.3 9 (86, 90) 63.4 3 (62, 66) Counter({4: 3, 6: 3, 3: 2, 7: 2, 8: 2, 9: 2, 5: 1, 10: 1, 0: 1, 2: 1}) Binning với gấu trúcCác gấu trúc mô -đun của Python cung cấp các chức năng mạnh mẽ cho việc sử dụng dữ liệu. Chúng tôi sẽ chứng minh điều này bằng cách sử dụng dữ liệu trước đây của chúng tôi. Thùng được sử dụng bởi gấu trúcChúng tôi đã sử dụng một danh sách các bộ dữ liệu như các thùng trong ví dụ trước của chúng tôi. Chúng tôi phải biến danh sách này thành một cấu trúc dữ liệu có thể sử dụng cho hàm gấu trúc "cắt". Cấu trúc dữ liệu này là một khoảng thời gian. Chúng ta có thể làm điều này với pd.IntervalIndex.from_tuples: import pandas as pd bins2 = pd.IntervalIndex.from_tuples(bins) "Cut" là tên của hàm gấu trúc, cần thiết để các giá trị thùng thành thùng. "Cut" có nhiều tham số nhưng các tham số quan trọng nhất là "x" cho các giá trị thực tế und "thùng", xác định khoảng thời gian. "X" có thể là bất kỳ cấu trúc giống như mảng 1 chiều nào, ví dụ: Tuples, Danh sách, nd-marrays, v.v. categorical_object = pd.cut(weights_of_persons, bins2) print(categorical_object) OUTPUT:[(70, 74], (66, 70], (62, 66], (74, 78], (74, 78], ..., (58, 62], (66, 70], (70, 74], (86, 90], (62, 66]] Length: 18 Categories (11, interval[int64, right]): [(50, 54] < (54, 58] < (58, 62] < (62, 66] ... (78, 82] < (82, 86] < (86, 90] < (90, 94]] Kết quả của hàm gấu trúc "cắt" là cái gọi là "đối tượng phân loại". Mỗi thùng là một loại. Các loại được mô tả trong một ký hiệu toán học. "(70, 74]" có nghĩa là các thùng này chứa các giá trị từ 70 đến 74 trong khi 70 không được bao gồm nhưng bao gồm 74. . Đôi khi nó cũng được gọi là một khoảng thời gian nửa đóng. Chúng tôi cũng đã định nghĩa các thùng trong chương trước của chúng tôi là một nửa khoảng mở, nhưng theo cách khác, tức là bên trái đóng và bên phải mở. Khi chúng tôi sử dụng pd.IntervalIndex.from_tuples, chúng tôi có thể đã xác định "độ mở" của các thùng này bằng cách đặt tham số "đã đóng" thành một trong các giá trị:
Để có hành vi tương tự như trong chương trước của chúng tôi, chúng tôi sẽ đặt tham số đóng thành "trái": bins2 = pd.IntervalIndex.from_tuples(bins, closed="left") categorical_object = pd.cut(weights_of_persons, bins2) print(categorical_object) OUTPUT:bins = create_bins(lower_bound=10, width=10, quantity=5) bins0 Những cách khác để xác định thùngChúng tôi đã sử dụng một khoảng thời gian làm thùng để chia dữ liệu trọng lượng. Hàm "cắt" cũng có thể đối phó với hai loại biểu diễn bin khác:
bins = create_bins(lower_bound=10, width=10, quantity=5) bins3 OUTPUT:bins = create_bins(lower_bound=10, width=10, quantity=5) bins4 bins = create_bins(lower_bound=10, width=10, quantity=5) bins5 OUTPUT:bins = create_bins(lower_bound=10, width=10, quantity=5) bins6 Số lượng bin và số lượng giá trịCâu hỏi tiếp theo và thú vị nhất là làm thế nào chúng ta có thể thấy số lượng thùng thực tế. Điều này có thể được thực hiện với hàm "value_counts": bins = create_bins(lower_bound=10, width=10, quantity=5) bins7 OUTPUT:bins = create_bins(lower_bound=10, width=10, quantity=5) bins8 "Ít nhất bins = create_bins(lower_bound=10, width=10, quantity=5) bins9 OUTPUT:[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]0 Các danh mục là khoảng thời gian của các danh mục của các chỉ số nhãn: [(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]1 OUTPUT:[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]2 Sự tương ứng từ dữ liệu trọng lượng đến thùng: [(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]3 OUTPUT:[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]4 [(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]5 OUTPUT:[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]2 Đặt tên thùngHãy tưởng tượng, chúng tôi có một trường đại học, trong đó có ba cấp độ danh dự Latin tùy thuộc vào điểm trung bình (GPA): GPA):
[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]7 OUTPUT:[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]8 Chúng ta hãy xem xét các bằng cấp cá nhân của mỗi học sinh: [(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]9 OUTPUT:def find_bin(value, bins): """ bins is a list of tuples, like [(0,20), (20, 40), (40, 60)], binning returns the smallest index i of bins so that bin[i][0] <= value < bin[i][1] """ for i in range(0, len(bins)): if bins[i][0] <= value < bins[i][1]: return i return -10 Đào tạo Python sống Các khóa học trực tuyến sắp tới Ghi danh ở đây |