【发布时间】:2022-10-15 07:48:52
【问题描述】:
我有一个选举的投票结果。我想为每次投票从 Dirichlet 分布中模拟 50000 次抽签。但是当我运行这个单元格时。我收到此错误,但无法弄清楚我错在哪里。任何帮助,将不胜感激。
我的代码如下:
number= 50000
for i in range(len(dAll)):
vector =list(dAll[i][3:7])
random=np.random.dirichlet(vector,number)
postn=[]
for i in range(number): postn.append(random[i].argmax(axis=0))
postn=np.array(postn)
PNPD=100*len(np.where(postn ==0)[0])/number
ProbPNPD.append(PNPD)
PL=100*len(np.where(postn ==1)[0])/number
ProbPL.append(PL)
AD=100*len(np.where(postn ==2)[0])/number
ProbAD.append(AD)
Others=100*len(np.where(postn ==3)[0])/number
ProbOthers.append(Others)
#Probability of victory for each party
setprint=False
if setprint == True:
print('PNPD',PNPD,'%')
print('PL',PL,'%')
print('AD',AD,'%')
print('Others',Others,'%')
错误代码:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-16ba25b5e62c> in <module>
4 vector =list(dAll[i][3:7])
5
----> 6 random=np.random.dirichlet(vector,number)
7
8 postn=[]
mtrand.pyx in numpy.random.mtrand.RandomState.dirichlet()
ValueError: alpha <= 0
我的数据集中没有任何负数。 check in here
【问题讨论】:
-
我不知道
vector包含哪些值,但似乎其中一些是<= 0 -
您应该至少尝试自己调试它,向量中的值是什么?如果其中任何一个是否定的,那么这就是您的问题,从错误消息中非常清楚。
-
我检查了我的数据。没有任何负值。
-
零值也会触发相同的错误。
标签: python python-3.x random dirichlet numpy-random