有一个问题明确告诉我不要使用numpy
和{
给定一个列表列表,每个sublist
的长度为2,即[x,y],[p,q],[l,m]…[r,s]]考虑其类似于n行和两列的matrix
第一列F只包含5个唯一值(F1、F2、F3、F4、F5) 第二列S将只包含3个唯一值(S1、S2、S3) 你的任务是找到
a. Probability of P(F=F1|S==S1), P(F=F1|S==S2), P(F=F1|S==S3)
b. Probability of P(F=F2|S==S1), P(F=F2|S==S2), P(F=F2|S==S3)
c. Probability of P(F=F3|S==S1), P(F=F3|S==S2), P(F=F3|S==S3)
d. Probability of P(F=F4|S==S1), P(F=F4|S==S2), P(F=F4|S==S3)
e. Probability of P(F=F5|S==S1), P(F=F5|S==S2), P(F=F5|S==S3)
Ex:
[[F1,S1],[F2,S2],[F3,S3],[F1,S2],[F2,S3],[F3,S2],[F2,S1],[F4,S1],[F4,S3],[F5,S1]]
a. P(F=F1|S==S1)=1/4, P(F=F1|S==S2)=1/3, P(F=F1|S==S3)=0/3
b. P(F=F2|S==S1)=1/4, P(F=F2|S==S2)=1/3, P(F=F2|S==S3)=1/3
c. P(F=F3|S==S1)=0/4, P(F=F3|S==S2)=1/3, P(F=F3|S==S3)=1/3
d. P(F=F4|S==S1)=1/4, P(F=F4|S==S2)=0/3, P(F=F4|S==S3)=1/3
e. P(F=F5|S==S1)=1/4, P(F=F5|S==S2)=0/3, P(F=F5|S==S3)=0/3
我为上面的代码编写了以下代码,但是,我得到了以下错误,我不确定是什么问题:
^{pr2}$另外,我写的代码似乎是实现上述问题的非常糟糕的方法,有更好的方法吗?如果是的话,请你分享。在
A = [['F1','S1'],['F2','S2'],['F3','S3'],['F1','S2'],['F2','S3'],['F3','S2'],['F2','S1'],['F4','S1'],['F4','S3'],['F5','S1']]
dictionary1 = {
'F1S1':0,
'F2S1':0,
'F3S1':0,
'F4S1':0,
'F5S1':0,
'F1S2':0,
'F2S2':0,
'F3S2':0,
'F4S2':0,
'F5S2':0,
'F1S3':0,
'F2S3':0,
'F3S3':0,
'F4S3':0,
'F5S3':0,
}
dictionary2= {
'S1':0,
'S2':0,
'S3':0
}
def compute_conditional_probabilities(A):
for i in range(len(A)):
if(A[i][0]=='F1'& A[i][1]=='S1'):
dictionary1['F1S1'] = dictionary1['F1S1'] +1
dictionary2['S1'] = dictionary2['S1'] +1
if(A[i][0]=='F1'&A[i][1]=='S2'):
dictionary1['F1S2'] = dictionary1['F1S2'] +1
dictionary2['S2'] = dictionary2['S2'] +1
if(A[i][0]=='F1'&A[i][1]=='S3'):
dictionary1['F1S3'] = dictionary1['F1S3'] +1
dictionary2['S3'] = dictionary2['S3'] +1
if(A[i][0]=='F2'&A[i][1]=='S1'):
dictionary1['F2S1'] = dictionary1['F2S1'] +1
dictionary2['S1'] = dictionary2['S1'] +1
if(A[i][0]=='F2'&A[i][1]=='S2'):
dictionary1['F2S2'] = dictionary1['F2S2'] +1
dictionary2['S2'] = dictionary2['S2'] +1
if(A[i][0]=='F2'&A[i][1]=='S3'):
dictionary1['F2S3'] = dictionary1['F2S3'] +1
dictionary2['S3'] = dictionary2['S3'] +1
if(A[i][0]=='F3'&A[i][1]=='S1'):
dictionary1['F3S1'] = dictionary1['F3S1'] +1
dictionary2['S1'] = dictionary2['S1'] +1
if(A[i][0]=='F3'&A[i][1]=='S2'):
dictionary1['F3S2'] = dictionary1['F3S2'] +1
dictionary2['S2'] = dictionary2['S2'] +1
if(A[i][0]=='F3'&A[i][1]=='S3'):
dictionary1['F3S3'] = dictionary1['F3S3'] +1
dictionary2['S3'] = dictionary2['S3'] +1
if(A[i][0]=='F4'&A[i][1]=='S1'):
dictionary1['F4S1'] = dictionary1['F4S1'] +1
dictionary2['S1'] = dictionary2['S1'] +1
if(A[i][0]=='F4'&A[i][1]=='S2'):
dictionary1['F4S2'] = dictionary1['F4S2'] +1
dictionary2['S2'] = dictionary2['S2'] +1
if(A[i][0]=='F4'&A[i][1]=='S3'):
dictionary1['F4S3'] = dictionary1['F4S3'] +1
dictionary2['S3'] = dictionary2['S3'] +1
if(A[i][0]=='F5'&A[i][1]=='S1'):
dictionary1['F5S1'] = dictionary1['F5S1'] +1
dictionary2['S1'] = dictionary2['S1'] +1
if(A[i][0]=='F5'&A[i][1]=='S2'):
dictionary1['F5S2'] = dictionary1['F5S2'] +1
dictionary2['S2'] = dictionary2['S2'] +1
if(A[i][0]=='F5'&A[i][1]=='S3'):
dictionary1['F5S3'] = dictionary1['F5S3'] +1
dictionary2['S3'] = dictionary2['S3'] +1
compute_conditional_probabilities(A)
print('Probability of P(F=F1|S==S1)',(dictionary1['F1S1']/dictionary2['S1']))
(删除了答案中与已修复的部分代码相关的部分)
请注意,在调用字典时,不必将键名作为字符串传递-可以传递保存该值的变量。例如,如果}。使用此方法,以及您可以将字符串“添加”在一起以连接它们(例如“a”+“b”=“ab”),您可以将
d
是一个字典,k
是一个等于1
的变量,则可以传递d[k]
,而不是{compute_conditional_probabilities
函数重写为:看看这是否有效,快乐的编码!在
在上面的函数中,我只需将一个[0]和一个[1]组合在一起,然后放入一个列表列表combine中,将一个[1]放入list listDen中
^{pr2}$我数了一下列表中的项目数,找到了条件概率,我不认为这是最好的方法
试试这个
输出
^{pr2}$相关问题 更多 >
编程相关推荐