我想比较两个字典中的“键”和“值”。
Dic1 = {
'FOSF SER': 0,
'ECA': 1,
'GL': 1,
'GL H2': 1,
'GL JEJ': 0
}
Dic2 = {
'Diabetes': {'GL' : 1, 'GL JEJ': 1, 'HBA GLC': 1, 'GL 2H': 1},
'Hipotireioidismo': {'FOSF SER': 1, 'ECA': 1, 'TSH 21-54': 1, 'TSH 55-87': 1},
'Hipertireioidismo': {'FOSF SER': 0, 'TSH 21-54': 0, 'TSH 55-87': 0}
}
换句话说,我希望Python做出以下预测:
在词典“ Dic2”中的项中,哪一项与词典“ Dic1”具有更多相似性? Dic2中列出的每个项目代表Dic1的概率是多少(%)?
我希望输出是这样的:
"Diabetes: x.xx%"
"Hipotireoidismo: x.xx%"
"Hipertireoidismo: x.xx%"
答案 0 :(得分:0)
您可以执行以下操作以比较列表之间的值,并输出基于症状(y)的疾病(x)可能性。百分比值是根据可以满足的症状数量来计算的,尽管可以轻松添加,但没有考虑负面症状或遗漏症状-这只是让您滚球的起点
outMat = [re(eg) for eg in egV]
答案 1 :(得分:0)
对于这个问题,我不会使用SkLearn。借助简单的嵌套循环,就可以解决它。
假设您只想找到与查询字典(Dic1)相等的项数最多的字典,再除以查询中的项数(相似性),我想到的最简单的答案是:
nDic1 = len(Dic1)*1.
for item in Dic2:
match = 0
iDic = Dic2[item]
for i in iDic:
if i in Dic1:
if iDic[i] == Dic1[i]:
match +=1
print("{}: {}%".format(item, match*100/nDic1))
在这种情况下,打印结果为:
Diabetes: 20.0%
Hipotireioidismo: 20.0%
Hipertireioidismo: 20.0%