我正在尝试使用我使用石榴的 python 来做一个 PageRank 程序。目前我sample()
在石榴中的马尔可夫模型中的函数存在问题,这是我使用它的代码中的一个片段,
for each_page in pages:
t_model = transition_model(corpus,each_page,damping_factor)
cpt = [] #conditional probability table
for next_page,transition_probabilities in t_model.items():
if (each_page != next_page):
cpt.append([each_page,next_page,transition_probabilities])
#print(f'cpt = {cpt}\n')
#define initial condition or starting probabilities, assuming all the pages are equally likely
next_pages = list(t_model.keys())
start = DiscreteDistribution({p:np.float64(1/len(next_pages)) for p in next_pages})
#print(start)
#define transitions
transitions = ConditionalProbabilityTable(cpt,[start])
model = MarkovChain([start,transitions])
print("sampling...\n",model.sample(n))
return model.sample(n)
正如标题所暗示的,解释器会抛出一个值错误 sum(pvals[:-1]) > 1.0
,说明 line model.sample()
。
我将花时间强调一个事实,即所有概率都被归一化并且总和为 1,包括转换模型中的概率
任何帮助将不胜感激