我正在尝试构建一个朴素的贝叶斯分类器,它从文本文件读取数据并输出到文本文件,我的代码是一个错误,但是返回是在函数之外但是我看不出错误
# compute the relative frequencies of the
# 2nd explanatory variable taking on the
# values 'A', 'B' and 'C'
# and return a dictionary with these values
def getCatProbs(self, data):
a_count = 0
b_count = 0
c_count = 0
probs = {}
for row in data:
if row[1] == ">50K":
a_count = a_count + 1
if row[1] == "<=50K":
b_count = b_count + 1
else:
c_count = c_count + 1
probs[">50K"] = float(a_count)/len(data)
probs["<=50K"] = float(b_count)/len(data)
probs['C'] = float(c_count)/len(data)
return probs
答案 0 :(得分:2)
在python中,缩进很重要。例如,函数getCatProbs
的代码定义在行probs = {}
之后完成,这显然将return
留在了函数体之外。
以下是适当缩进的代码:
# compute the relative frequencies of the
# 2nd explanatory variable taking on the
# values 'A', 'B' and 'C'
# and return a dictionary with these values
def getCatProbs(self, data):
a_count = 0
b_count = 0
c_count = 0
probs = {}
for row in data:
if row[1] == ">50K":
a_count = a_count + 1
if row[1] == "<=50K":
b_count = b_count + 1
else:
c_count = c_count + 1
probs[">50K"] = float(a_count)/len(data)
probs["<=50K"] = float(b_count)/len(data)
probs['C'] = float(c_count)/len(data)
return probs
答案 1 :(得分:1)
你的回归确实超出了你的职能范围。整个for
循环不在您的函数中。我认为你的意思是将for
循环缩进一个级别,以便它在函数内部。
答案 2 :(得分:0)
格式在Python中很有意义。
在我看来,你的缩进并不一致。 for循环和后续行似乎已关闭。
我建议使用一个好的IDE。 JetBrains是市场上最好的产品。试试PyCharm。这会使犯这样的错误变得更加困难。