Bu eski bir sorudur, ancak önceki cevapların hiçbiri gerçek meseleye, yani sorunun sorunun kendisinde olduğu gerçeğine değinmemiştir.
Birincisi, olasılıklar önceden hesaplanmışsa, yani toplanan histogram verileri normalleştirilmiş bir şekilde mevcutsa, olasılıklar 1'e kadar eklenmelidir. Açıkçası yok ve bu, terminoloji veya verilerle burada bir şeylerin yanlış olduğu anlamına gelir. ya da sorunun sorulduğu şekilde.
İkincisi, etiketlerin (aralıkların değil) sağlanmış olması, normal olarak olasılıkların kategorik yanıt değişkenine ait olduğu anlamına gelir ve histogramı çizmek için bir çubuk grafiğinin kullanılması en iyisidir (veya pyplot'un geçmiş yönteminin bir miktar hacklenmesi). Shayan Shafiq'in cevabı kodu sağlıyor.
Bununla birlikte, sorun 1'e bakın, bu olasılıklar doğru değildir ve bu durumda çubuk grafiği kullanmak yanlış olacaktır çünkü bir sebepten dolayı tek değişkenli dağılımın hikayesini anlatmaz (belki de sınıflar örtüşüyor ve gözlemler birden fazla sayılıyor) kez?) ve böyle bir çizim bu durumda histogram olarak adlandırılmamalıdır.
Histogram, tanımı gereği, tek değişkenli değişken dağılımının grafik bir temsilidir (bkz. Https://www.itl.nist.gov/div898/handbook/eda/section3/histogra.htm , https://en.wikipedia.org/wiki / Histogram) ve ilgilenilen değişkenin seçilen sınıflarında gözlemlerin sayımlarını veya sıklıklarını temsil eden boyutlarda çubuklar çizilerek oluşturulur. Değişken sürekli bir ölçekte ölçülürse, bu sınıflar bölmelerdir (aralıklar). Histogram oluşturma prosedürünün önemli bir parçası, kategorik bir değişken için yanıt kategorilerinin nasıl gruplandırılacağına (veya gruplandırılmadan tutulacağına) veya olası değerlerin alan adının aralıklara nasıl bölüneceğine (ikili sınırları nereye koyacağınıza) karar vermektir. tip değişken. Tüm gözlemler temsil edilmeli ve her biri olay örgüsünde yalnızca bir kez olmalıdır. Bu, çubuk boyutlarının toplamının toplam gözlem sayısına (veya daha az yaygın bir yaklaşım olan değişken genişlikler durumunda alanlarına) eşit olması gerektiği anlamına gelir. Veya histogram normalleştirilmişse, tüm olasılıkların toplamı 1 olmalıdır.
Verinin kendisi yanıt olarak "olasılıklar" listesiyse, yani gözlemler her çalışma nesnesi için olasılık değerleriyse (bir şeyin) o zaman en iyi yanıt, plt.hist(probability)
belki binning seçeneğidir ve zaten mevcut olan x etiketlerinin kullanımı şüpheli.
O zaman çubuk grafiği, histogram olarak kullanılmamalı, basitçe
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()
sonuçlarla
Böyle bir durumda matplotlib varsayılan olarak aşağıdaki histogram değerleriyle gelir
(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>)
sonuç bir dizi dizisidir, ilk dizi gözlem sayılarını içerir, yani arsanın y eksenine göre gösterilecekler (toplamlar 13, toplam gözlem sayısı) ve ikinci dizi x için aralık sınırlarıdır. eksen.
Eşit aralıklı oldukları kontrol edilebilir,
x = plt.hist(probability)[1]
for left, right in zip(x[:-1], x[1:]):
print(left, right, right-left)
Veya örneğin 3 bölme için (benim kararım 13 gözlem gerektiriyor) bu histogramı elde edebilirsiniz
plt.hist(probability, bins=3)
arsa verileri "parmaklıkların arkasında"
Sorunun yazarının, değerlerin "olasılık" listesinin anlamının ne olduğunu açıklığa kavuşturması gerekir - "olasılık", yanıt değişkeninin yalnızca bir adıdır (öyleyse neden histogram için hazır x etiketleri var, bu anlam ifade etmiyor) ) veya listedeki değerler verilerden hesaplanan olasılıklardır (bu durumda toplamlarının 1'e kadar çıkmaması hiçbir anlam ifade etmez).