1

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]]

great_class_prob_distには別の行があるので、この行の何が問題なのかわかりません。

cgclass = self.greater_class_prob_dist[query[2]]

このクラスは単純ベイズ実装であり、「Without-pay」を含むテキストファイルからエントリを取得する場合は完全に機能し、そうでない場合は機能しません。

誰かがこの問題を解決する方法を知っていますか?

人々がそれを見るか実行する必要がある場合は、クラス全体とテキストファイルへのリンクを次に示します。 ソースコード

どんな助けでも大いにappericated

編集:レコードの印刷には「無給」が含まれています

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

1 に答える 1

1

のすべてのエントリを見ると、 のすべてのエントリが収入があるものとしてリストされているtrainingset.txtことがわかります。でわかるように、トレーニング データは 2 つのグループに分割されます。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)

..結果のdictにはそのキーがありません。

于 2012-04-21T16:50:29.043 に答える