Jest to stare pytanie, ale żadna z poprzednich odpowiedzi nie dotyczyła prawdziwego problemu, tj. Faktu, że problem dotyczy samego pytania.
Po pierwsze, jeśli prawdopodobieństwa zostały już obliczone, tj. Zagregowane dane histogramu są dostępne w znormalizowany sposób, to prawdopodobieństwa powinny sumować się do 1. Oczywiście nie mają, a to oznacza, że coś tu jest nie tak, czy to z terminologią, czy z danymi lub w sposobie zadawania pytania.
Po drugie, fakt, że etykiety są dostarczane (a nie przedziały), normalnie oznaczałby, że prawdopodobieństwa są kategoryczną zmienną odpowiedzi - a użycie wykresu słupkowego do wykreślenia histogramu jest najlepsze (lub pewne zhakowanie metody hist wykresu pyplota), Odpowiedź Shayana Shafiqa zawiera kod.
Jednak patrz kwestia 1, te prawdopodobieństwa nie są poprawne i użycie wykresu słupkowego w tym przypadku jako „histogramu” byłoby błędne, ponieważ z jakiegoś powodu nie opowiada on historii o rozkładzie jednowymiarowym (być może klasy nakładają się i obserwacje są liczone wielokrotnie razy?) i takiego wykresu nie należy w tym przypadku nazywać histogramem.
Histogram jest z definicji graficzną reprezentacją rozkładu zmiennej jednowymiarowej (patrz https://www.itl.nist.gov/div898/handbook/eda/section3/histogra.htm , https://en.wikipedia.org/wiki / Histogram) i jest tworzony poprzez rysowanie słupków o rozmiarach reprezentujących liczebności lub częstości obserwacji w wybranych klasach interesującej nas zmiennej. Jeśli zmienna jest mierzona w skali ciągłej, klasy te są przedziałami (przedziałami). Ważną częścią procedury tworzenia histogramu jest dokonanie wyboru, w jaki sposób pogrupować (lub zachować bez grupowania) kategorie odpowiedzi dla zmiennej kategorialnej lub jak podzielić dziedzinę możliwych wartości na przedziały (gdzie umieścić granice bin) dla ciągłej zmienna typu. Wszystkie obserwacje należy przedstawić i każdą tylko raz na wykresie. Oznacza to, że suma rozmiarów słupków powinna być równa całkowitej liczbie obserwacji (lub ich powierzchni w przypadku zmiennych szerokości, co jest rzadziej stosowane). Lub, jeśli histogram jest znormalizowany, wszystkie prawdopodobieństwa muszą sumować się do 1.
Jeśli same dane są listą „prawdopodobieństw” jako odpowiedzi, tj. Obserwacje są wartościami prawdopodobieństwa (czegoś) dla każdego obiektu badania, wówczas najlepszą odpowiedzią jest po prostu plt.hist(probability)
być może opcja binningu, a użycie już dostępnych etykiet x jest podejrzany.
Wtedy wykres słupkowy nie powinien być używany jako histogram, ale raczej po prostu
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()
z wynikami
matplotlib w takim przypadku pojawia się domyślnie z następującymi wartościami histogramu
(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>)
wynikiem jest krotka tablic, pierwsza tablica zawiera zliczenia obserwacji, czyli to, co zostanie pokazane na osi y wykresu (sumują się do 13, całkowita liczba obserwacji), a druga tablica to granice przedziałów dla x -oś.
Można sprawdzić, czy są równo rozstawione,
x = plt.hist(probability)[1]
for left, right in zip(x[:-1], x[1:]):
print(left, right, right-left)
Lub, na przykład, dla 3 pojemników (moja ocena wymaga 13 obserwacji), można by otrzymać ten histogram
plt.hist(probability, bins=3)
z danymi wykresu będącymi „za kratkami”
Autor pytania musi sprecyzować, jakie znaczenie ma lista wartości „prawdopodobieństwa” - czy „prawdopodobieństwo” to tylko nazwa zmiennej odpowiedzi (w takim razie dlaczego są gotowe x-etykiety na histogram, to nie ma sensu ), czy też lista wartości prawdopodobieństw obliczonych na podstawie danych (wtedy fakt, że nie sumują się one do 1, nie ma sensu).