Matplotlib сюжет pmf из списка двумерных массивов - PullRequest
0 голосов
/ 31 мая 2018

У меня есть набор данных из моих симуляций, где я объединяю результаты каждого семени симуляции в большой список, используя bl.extend(df['column'].tolist()).

Я также запускаю несколько сценариев моделирования, поэтому я добавляю каждый сценарий в список списков.

Наконец, я вычисляю функцию вероятностной массы (PMF) каждого списка следующим образом(из Как построить PMF образца? )

for idx,sublist in enumerate(pmf_list):
        val, cnt = np.unique(sublist, return_counts=True)
        pmf = cnt / float(len(sublist))
        plot_pmf.append(np.column_stack((val, pmf)))

Проблема в том, что я получаю список массивов, которые я не знаю, как построить.Минимальный код для воспроизведения проблемы следующий:

import numpy as np

list1 = np.empty([2, 2])
list2 = np.empty([2, 2])
list3 = np.empty([2, 2])
bl = [] # big list
bl.append(list1)
bl.append(list2)
bl.append(list3)
print bl

Я могу построить график, используя plt.hist (bl [0]), но он не дает мне правильных результатов.См. График, прикрепленный к следующему списку.

<type 'numpy.ndarray'>
[[0.00000000e+00 1.91734780e-01]
 [1.00000000e+00 2.94277080e-02]
 [2.00000000e+00 3.28276369e-01]
 [3.00000000e+00 4.43357154e-01]
 [4.00000000e+00 3.54294582e-03]
 [5.00000000e+00 1.57306794e-03]
 [6.00000000e+00 2.00530733e-03]
 [7.00000000e+00 2.95245485e-05]
 [8.00000000e+00 2.24386568e-05]
 [9.00000000e+00 2.83435665e-05]
 [1.00000000e+01 1.18098194e-06]
 [1.20000000e+01 1.18098194e-06]]

Форматирование значений y, которые я получаю:

0.1944084241
0.0415880165
0.3480178394
0.4031723062
0.0050902199
0.0033411939
0.0040175705
0.0001480127
0.0001031961
0.0001008373
0.0000058969
0.0000011794
0.0000047175
0.0000005897

очень отличается от значений y на графике гистограммы

enter image description here

1 Ответ

0 голосов
/ 31 мая 2018

Правильно ли выглядит следующий график?

import matplotlib.pyplot as plt
import numpy as np

X = np.array([[0.00000000e+00, 1.91734780e-01],
              [1.00000000e+00, 2.94277080e-02],
              [2.00000000e+00, 3.28276369e-01],
              [3.00000000e+00, 4.43357154e-01],
              [4.00000000e+00, 3.54294582e-03],
              [5.00000000e+00, 1.57306794e-03],
              [6.00000000e+00, 2.00530733e-03],
              [7.00000000e+00, 2.95245485e-05],
              [8.00000000e+00, 2.24386568e-05],
              [9.00000000e+00, 2.83435665e-05],
              [1.00000000e+01, 1.18098194e-06],
              [1.20000000e+01, 1.18098194e-06],])

plt.bar(x=X[:, 0], height=X[:, 1])
plt.show()

Если у вас уже есть первый столбец в качестве возможных значений случайной величины, а второй столбец в качествесоответствующие значения вероятности, вы можете использовать гистограмму для визуализации PMF.

Функция графика гистограммы plt.hist предназначена для вектора наблюдаемых значений.Например,

import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

np.random.seed(0)
plt.hist(np.random.normal(size=1000))
plt.show()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...