Đây là một câu hỏi cũ nhưng không có câu trả lời nào trước đây đề cập đến vấn đề thực sự, tức là thực tế rằng vấn đề nằm ở chính câu hỏi.
Đầu tiên, nếu xác suất đã được tính toán, tức là dữ liệu tổng hợp biểu đồ có sẵn theo cách chuẩn hóa thì xác suất sẽ cộng lại bằng 1. Rõ ràng là không và điều đó có nghĩa là có điều gì đó không ổn ở đây, với thuật ngữ hoặc dữ liệu hoặc theo cách đặt câu hỏi.
Thứ hai, thực tế là các nhãn được cung cấp (chứ không phải khoảng thời gian) thông thường sẽ có nghĩa là các xác suất thuộc biến phản ứng phân loại - và việc sử dụng một biểu đồ thanh để vẽ biểu đồ là tốt nhất (hoặc một số hack phương pháp lịch sử của pyplot), Câu trả lời của Shayan Shafiq cung cấp mã.
Tuy nhiên, hãy xem vấn đề 1, những xác suất đó không đúng và việc sử dụng biểu đồ thanh trong trường hợp này là "biểu đồ" sẽ sai vì nó không kể câu chuyện về phân phối đơn biến, vì một số lý do (có lẽ các lớp chồng chéo và các quan sát được tính nhiều lần?) và âm mưu như vậy không được gọi là biểu đồ trong trường hợp này.
Biểu đồ theo định nghĩa là một biểu diễn đồ họa của sự phân bố của biến đơn biến (xem https://www.itl.nist.gov/div898/handbook/eda/section3/histogra.htm , https://en.wikipedia.org/wiki /Biểu đồ) và được tạo ra bằng cách vẽ các thanh có kích thước biểu thị số lượng hoặc tần số quan sát trong các lớp được chọn của biến quan tâm. Nếu biến được đo trên thang đo liên tục thì các lớp đó là thùng (khoảng). Phần quan trọng của quy trình tạo biểu đồ là lựa chọn cách nhóm (hoặc giữ mà không nhóm) các danh mục phản hồi cho một biến phân loại hoặc cách chia miền của các giá trị có thể thành các khoảng (nơi đặt ranh giới bin) cho liên tục biến kiểu. Tất cả các quan sát phải được thể hiện và mỗi quan sát chỉ một lần trong biểu đồ. Điều đó có nghĩa là tổng kích thước thanh phải bằng tổng số lượng quan sát (hoặc diện tích của chúng trong trường hợp chiều rộng thay đổi, đây là cách tiếp cận ít phổ biến hơn). Hoặc, nếu biểu đồ được chuẩn hóa thì tất cả các xác suất phải cộng với 1.
Nếu bản thân dữ liệu là một danh sách các "xác suất" như một phản hồi, tức là các quan sát là giá trị xác suất (của một cái gì đó) cho mỗi đối tượng nghiên cứu thì câu trả lời tốt nhất chỉ đơn giản là plt.hist(probability)
có thể có tùy chọn binning và sử dụng các nhãn x đã có sẵn là đáng ngờ.
Khi đó, biểu đồ thanh không nên được sử dụng làm biểu đồ mà chỉ đơn giản là
import matplotlib.pyplot as plt
probability = [0.3602150537634409, 0.42028985507246375,
0.373117033603708, 0.36813186813186816, 0.32517482517482516,
0.4175257731958763, 0.41025641025641024, 0.39408866995073893,
0.4143222506393862, 0.34, 0.391025641025641, 0.3130841121495327,
0.35398230088495575]
plt.hist(probability)
plt.show()
với kết quả
matplotlib trong trường hợp như vậy đến theo mặc định với các giá trị biểu đồ sau
(array([1., 1., 1., 1., 1., 2., 0., 2., 0., 4.]),
array([0.31308411, 0.32380469, 0.33452526, 0.34524584, 0.35596641,
0.36668698, 0.37740756, 0.38812813, 0.39884871, 0.40956928,
0.42028986]),
<a list of 10 Patch objects>)
kết quả là một bộ nhiều mảng, mảng đầu tiên chứa số lượng quan sát, tức là những gì sẽ được hiển thị so với trục y của biểu đồ (chúng cộng lại tối đa 13, tổng số quan sát) và mảng thứ hai là khoảng giới hạn của x -axis.
Người ta có thể kiểm tra chúng cách đều nhau,
x = plt.hist(probability)[1]
for left, right in zip(x[:-1], x[1:]):
print(left, right, right-left)
Hoặc, ví dụ: đối với 3 thùng (gọi theo phán đoán của tôi cho 13 quan sát) một thùng sẽ nhận được biểu đồ này
plt.hist(probability, bins=3)
với dữ liệu âm mưu "đằng sau song sắt" là
Tác giả của câu hỏi cần phải làm rõ ý nghĩa của danh sách giá trị "xác suất" là gì - "xác suất" chỉ là tên của biến phản hồi (vậy tại sao lại có các nhãn x sẵn sàng cho biểu đồ, điều đó không có ý nghĩa gì ), hoặc là các giá trị danh sách xác suất được tính toán từ dữ liệu (khi đó thực tế là chúng không cộng đến 1 sẽ không có ý nghĩa gì).