gpt4 book ai didi

Python 朴素贝叶斯 : Why am I getting a ZeroDivisionError

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:01 25 4
gpt4 key购买 nike

我正在试用 NaiveBayes Python 库 (python 2.7)

我想知道为什么运行这段代码会给我一个ZeroDivisionError

#!/usr/bin/env python
import NaiveBayes

model = NaiveBayes.NaiveBayes()

model.set_real(['Height'])
model.set_real(['Weight'])
model.add_instances({'attributes':
{'Height': 239,
'Weight': 231,
},
'cases': 32,
'label': 'Sex=M'})

model.add_instances({'attributes':
{'Height': 190,
'Weight': 152
},
'cases': 58,
'label': 'Sex=F'
})

model.train()
result = model.predict({'attributes': {'Height': 212, 'Weight': 200}})

print("The result is %s" % (result))

这是输出:

Traceback (most recent call last):
File "/tmp/py4127eDT", line 24, in <module>
result = model.predict({'attributes': {'Height': 212, 'Weight': 200}})
File "/usr/local/lib/python2.7/dist-packages/NaiveBayes.py", line 152, in predict
scores[label] /= sumPx
ZeroDivisionError: float division by zero

我是贝叶斯分类器的新手,所以我的输入有问题吗(即:数字的分布,或者没有足够的样本?)

最佳答案

有两个问题:

首先,您使用的是 python 2.7,并且 NaiveBayes需要 python 3。对于 python 2,它使用的除法变为整数除法并返回零。

其次,每个标签的每个属性只有一个实例,因此西格玛为零。

为您的真实属性添加更多变化:

import NaiveBayes

model = NaiveBayes.NaiveBayes()

model.set_real(['Height'])
model.set_real(['Weight'])
model.add_instances({'attributes':
{'Height': 239,
'Weight': 231,
},
'cases': 32,
'label': 'Sex=M'})

model.add_instances({'attributes':
{'Height': 233,
'Weight': 234,
},
'cases': 32,
'label': 'Sex=M'})
model.add_instances({'attributes':
{'Height': 190,
'Weight': 152
},
'cases': 58,
'label': 'Sex=F'
})
model.add_instances({'attributes':
{'Height': 191,
'Weight': 153
},
'cases': 58,
'label': 'Sex=F'
})

model.train()
result = model.predict({'attributes': {'Height': 212, 'Weight': 200}})

print ("The result is %s" % (result))

并使用python3:

$ python3 bayes.py
The result is {'Sex=M': 1.0, 'Sex=F': 0.0}

关于Python 朴素贝叶斯 : Why am I getting a ZeroDivisionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com