这是我previous question的延续,我对此有了疑问,并被要求提出一个新问题!所以这里。
假设我有一个100号的数组。
如何计算数组中每个值的概率?
到目前为止我的理解:
import numpy as np
import scipy.stats
from scipy import stats
import matplotlib.pyplot as plt
def getDistribution(data):
kernel = stats.gaussian_kde(data,bw_method=0.07)
class rv(stats.rv_continuous):
def _rvs(self, *x, **y):
return kernel.resample(int(self._size)) #random variates
def _cdf(self, x):
return kernel.integrate_box_1d(0,max(x)) #Integrate pdf between two bounds (-inf to x here!)
def _pdf(self, x):
return kernel.evaluate(x) #Evaluate the estimated pdf on a provided set of points
return rv(name='kdedist')
data = np.random.random(100)
sorted_data = np.sort(data)
dist = getDistribution(sorted_data)
pdf = dist.pdf(sorted_data)
plt.plot(sorted_data,pdf_data,'-o')
plt.hist(sorted_data,normed=True)
plt.show()
我知道上面的代码给了我pdf ,当我在数据的直方图旁边绘制时,我得到这样的东西。
我想知道如何获得属于数据的每个点的概率。我想为每个数据点分配相同的权重。