2012-04-21 85 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