2012-04-21 112 views
1

我有一个Python关键错误,并没有能够整理出来。Python关键错误

是给予如下所示

Traceback (most recent call last): 
File "<pyshell#4>", line 1, in <module> 
import handling_data_ 
File "C:\Python27\handling_data_.py", line 453, in <module> 
main() 
File "C:\Python27\handling_data_.py", line 443, in main 
pans.append([row[0],p.classify(row)]) 
File "C:\Python27\handling_data_.py", line 367, in classify 
cgclass = self.greater_class_prob_dist[query[2]] 
KeyError: ' Without-pay' 

这行的错误是

clclass = self.less_class_prob_dist[query[2]] 

我amen't知道是什么毛病此行还有另外一个线greater_class_prob_dist

cgclass = self.greater_class_prob_dist[query[2]] 

该班是一个天真的bayes实施,它运作正常,如果采取entri从包含“无薪”的文本文件中删除,否则它不会。

有谁知道如何解决这个问题?

这是全班同学和TEXTFILES一个链接,如果人们需要看它或运行它,看看问题为自己 Source Code

任何帮助非常appericated

编辑: 打印记录包含“不支付”

['tst1249', 62, ' Without-pay', 170114, ' Assoc-acdm', 12, ' Married-civ-spouse', ' Farming-fishing', ' Husband', ' White', ' Male', 0, 0, 50, ' United-States', '?'] 
+7

你确定可以接受的关键是“无薪”而不是“无薪”吗? – 2012-04-21 16:42:13

+2

在此处发布您的源代码的相关部分,以便任何人都可以看到您的代码所需的内容,即使在移动设备上。 – Makoto 2012-04-21 16:43:07

+0

是的,在文本文件中是'无薪',每个单词前都有一个空格。 – 2012-04-21 16:48:19

回答

1

如果你看一下在trainingset.txt所有条目,你会看到所有的Without-pay条目里认为拥有<=50k收入。正如你可以看到__init__,训练数据被分成两组:

 for row in data: 
       if row[15] == ' >50K': 
        self.greaterThan_data.append(row) 
       else: 
        self.lessThan_data.append(row) 

由于没有一个Without-pay条目有>50k收入,他们没有进入greaterThan_data

所以,当你呼唤我

 self.greater_class_prob_dist = self.getCatProbs(self.greaterThan_data,2) 

..the产生的字典缺乏一个关键。

+0

没有它正常工作,当'无薪'记录的queries.txt文件。当尝试上面的代码仍然有相同的问题 – 2012-04-21 17:09:04

+0

@Droid_Interceptor,好吧,我看起来有点难,这就是我想出的。 – senderle 2012-04-21 17:35:18