Что делает Cdf / Cdf [-1], когда cdf представляет накопительную функцию распределения, созданную из cv2.calcHist? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь расшифровать блок кода, который был завершен фрилансером, и я продолжаю зацикливаться на этой части.Я не могу вдаваться в подробности этого кода, но могу сказать, что он создает новую переменную внутри def run (self).Давайте назовем это «Результат».а затем взяв np.cumsum (гистограмму), назовем его «HistCumSum» и выполнив следующую операцию -> Result = HistCumSum / HistCumSum [-1]

Я искал в Google около недели и пыталсяраспечатывать числовые значения / рука делать математику, и это не имеет смысла

 HistCumSum = np.cumsum(Hist)

 Result = HistCumSum / HistCumSum[-1]

Я не могу объяснить, для чего используется результат

1 Ответ

0 голосов
/ 06 июня 2019

HistCumSum[-1] - окончательное значение в массиве HistCumSum.Поскольку HistCumSum является накопленной суммой, мы можем видеть Result = HistCumSum / HistCumSum[-1] как , нормализующий от совокупной частоты к совокупной функции распределения .

Взгляд на то, как выглядят Hist, HistCumSum и Result, может помочь разобраться:

import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt

x = np.linspace(-2, 2, num=100)
# Evaluate pdf in lieu of actual data
Hist = norm.pdf(x)

# Compute cumulative sum
HistCumSum = np.cumsum(Hist)
# Normalise cumulative sum to produce cdf
Result = HistCumSum / HistCumSum[-1]

fig, ax = plt.subplots(1, 3, figsize=[7, 3])
ax[0].plot(x, Hist)
ax[1].plot(x, HistCumSum)
ax[2].plot(x, Result)
ax[0].set_title('Hist')
ax[1].set_title('HistCumSum')
ax[2].set_title('Results (CDF)')
fig.tight_layout()

enter image description here

...