Ini adalah pertanyaan lama tetapi tidak ada jawaban sebelumnya yang membahas masalah yang sebenarnya, yaitu fakta bahwa masalahnya ada pada pertanyaan itu sendiri.
Pertama, jika probabilitas sudah dihitung, yaitu data agregat histogram tersedia dengan cara yang dinormalisasi maka probabilitas harus berjumlah 1. Mereka jelas tidak dan itu berarti ada yang salah di sini, baik dengan terminologi atau dengan datanya atau dalam cara pertanyaan itu diajukan.
Kedua, fakta bahwa label disediakan (dan bukan interval) biasanya berarti bahwa probabilitasnya adalah variabel respons kategoris - dan penggunaan plot batang untuk memplot histogram adalah yang terbaik (atau beberapa peretasan metode hist pyplot), Jawaban Shayan Shafiq memberikan kodenya.
Namun, lihat masalah 1, probabilitas tersebut tidak benar dan menggunakan diagram batang dalam hal ini sebagai "histogram" akan salah karena tidak menceritakan kisah distribusi univariat, untuk beberapa alasan (mungkin kelasnya tumpang tindih dan pengamatan dihitung berganda kali?) dan plot seperti itu tidak boleh disebut histogram dalam kasus ini.
Histogram adalah representasi grafis dari distribusi variabel univariat (lihat https://www.itl.nist.gov/div898/handbook/eda/section3/histogra.htm , https://en.wikipedia.org/wiki /Histogram) dan dibuat dengan menggambar batang dengan ukuran yang mewakili jumlah atau frekuensi pengamatan di kelas tertentu dari variabel yang diminati. Jika variabel diukur pada skala kontinu, kelas-kelas itu adalah bin (interval). Bagian penting dari prosedur pembuatan histogram adalah membuat pilihan tentang cara mengelompokkan (atau mempertahankan tanpa pengelompokan) kategori respons untuk variabel kategori, atau cara membagi domain nilai yang mungkin menjadi interval (tempat meletakkan batas bin) untuk kontinu. jenis variabel. Semua pengamatan harus diwakili, dan masing-masing hanya satu kali dalam plot. Itu berarti bahwa jumlah ukuran batang harus sama dengan jumlah total pengamatan (atau luasnya dalam kasus lebar variabel, yang merupakan pendekatan yang kurang umum). Atau, jika histogram dinormalisasi maka semua probabilitas harus berjumlah 1.
Jika datanya sendiri berupa daftar "probabilitas" sebagai respons, yaitu pengamatan adalah nilai probabilitas (dari sesuatu) untuk setiap objek studi maka jawaban terbaik adalah plt.hist(probability)
dengan opsi binning mungkin, dan penggunaan x-label yang sudah tersedia adalah mencurigakan.
Kemudian plot batang tidak boleh digunakan sebagai histogram melainkan sederhana
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()
dengan hasil
matplotlib dalam kasus seperti itu datang secara default dengan nilai histogram berikut
(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>)
hasilnya adalah tuple array, array pertama berisi jumlah observasi, yaitu apa yang akan ditampilkan terhadap sumbu y dari plot (jumlah tersebut berjumlah 13, jumlah total observasi) dan array kedua adalah batas interval untuk x -sumbu.
Seseorang dapat memeriksa apakah mereka memiliki jarak yang sama,
x = plt.hist(probability)[1]
for left, right in zip(x[:-1], x[1:]):
print(left, right, right-left)
Atau, misalnya untuk 3 bins (penilaian saya memanggil 13 observasi) seseorang akan mendapatkan histogram ini
plt.hist(probability, bins=3)
dengan data plot "di balik jeruji"
Penulis pertanyaan perlu mengklarifikasi apa arti dari daftar nilai "probabilitas" - apakah "probabilitas" hanyalah nama variabel respons (lalu mengapa ada x-label yang siap untuk histogram, tidak masuk akal ), atau apakah daftar nilai probabilitas yang dihitung dari data (maka fakta bahwa mereka tidak menambahkan hingga 1 tidak masuk akal).