2012-04-21 19 views
1

私はPython Key Errorを持っていて、それを並べ替えることができませんでした。Python Key Error

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' 

の下に問題の行を示している与えられたエラーがgreater_class_prob_dist

のための別の行は、この行の何が問題になっていると私は確信してamen't

clclass = self.less_class_prob_dist[query[2]] 

です

cgclass = self.greater_class_prob_dist[query[2]] 

クラスは純粋なbayesの実装であり、entriそれはそうでなければそれはしません。

誰でもこの問題を解決する方法を知っていますか?人々は自分のために問題を見て、それを見たり、それを実行する必要がある場合はここで

は、クラス全体やテキストファイルへのリンクです Source Code

くらい

EDIT appericatedすべてのヘルプ:レコードの 印刷をあなたがtrainingset.txt内のすべての項目を見ると、あなたがWithout-payを持つすべてのエントリはLiであることがわかります「がなければ、賃金」

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

受け入れ可能なキーは「無給」で、「無給」ではありませんか? –

+2

ソースコードの該当部分をここに投稿すると、モバイルデバイス上であっても、誰でもあなたのコードが何を伴うのかを知ることができます。 – Makoto

+0

ええ、それはテキストファイルの中に「なし」です。各単語の前にスペースがあります。 –

答えて

1

含まれてい収入は<=50kとなっています。あなたが__init__で見ることができるように、トレーニングデータを二つのグループに分かれています。Without-payエントリのどれも>50k収入を持っていないので、それらのどれもがgreaterThan_dataに入るん

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

だから、あなたが呼んで...

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

..theた辞書は、そのキーを欠いています。

+0

これは、「without-pay」レコードをqueries.txtファイルから取り除くと完全に機能しません。上記のコードを試してみても同じ問題が残っています –

+0

@Droid_Interceptor、OK、私はちょっと見た目が上がりました。 – senderle