2016-04-06 10 views
0

私は以下のコードを実行しています。最初の反復ではうまく動作していますが、2回目の反復が始まるとキーエラーが発生します。私は、2番目の反復が始まると自動的にキーに文字列 "L"が追加されていることに気づきます。以下の私のコードに リンク:私は使用していたデータのための2回目の反復でPandas/Numpyで余分な文字を追加する

Code for KNN having issues here

リンクは以下の通りです:なぜそれが起こっている

Data used for the code

わかりません。誰かが問題を引き起こしていることを教えてもらえますか?ヘルプは非常に高く評価されています! Traceback (most recent call last): File "C:/Python27/myScripts/KNN.py", line 114, in <module> pred_lst.append(predict_output_of_query(10.0, features_train, df_housePrice_train, features_test[i])) File "C:/Python27/myScripts/KNN.py", line 96, in predict_output_of_query avg1 += output_train["price"][i] File "C:\Python27\lib\site-packages\pandas\core\series.py", line 557, in __getitem__ result = self.index.get_value(self, key) File "C:\Python27\lib\site-packages\pandas\core\index.py", line 1790, in get_value return self._engine.get_value(s, k) File "pandas\index.pyx", line 103, in pandas.index.IndexEngine.get_value (pandas\index.c:3204) File "pandas\index.pyx", line 111, in pandas.index.IndexEngine.get_value (pandas\index.c:2903) File "pandas\index.pyx", line 157, in pandas.index.IndexEngine.get_loc (pandas\index.c:3843) File "pandas\hashtable.pyx", line 303, in pandas.hashtable.Int64HashTable.get_item (pandas\hashtable.c:6525) File "pandas\hashtable.pyx", line 309, in pandas.hashtable.Int64HashTable.get_item (pandas\hashtable.c:6463) KeyError: 6818L

+0

あなたがここにあなたの全体のコードとデータをダンプした場合、私はあなたが多くの回答を得ることになるとは思いません。問題を切り分けて、それを簡潔かつ重要なものにしてください。その後、より多くの反応を得るでしょう。 – Hun

+0

@Hunは誰かがコードを直接実行してエラーを見ることができるように、コードをデータとともに提供しました。私はエラー – user1122534

+0

まだかなり長いコードと大きなデータセットを持っているこのステップに到達するために前の手順を実行する必要があります。他の質問を見て、複数の回答を得た他の人がどうやってそれを行うのかを見てみましょう。 – Hun

答えて

0

今、私はあなたのget_numpy_dataの定義だけを見て、期待通りに動作しないと思っています。例えば、

features_train, output_train = get_numpy_data(df_housePrice_train, feature_list, 'price') 

は、df_housePrice_trainのように見えます。 output_trainは、文字列"price"を含むnp配列になります。


更新:

ラインdistances = []が本当に機能compute_distances内にある必要があります。この関数は、実行ごとに要素をdistancesに追加します。次に、いくつかの要素のインデックス(位置)がデータフレームに適用される。最初の実行ではすべて正常に動作しますが、後でリストが大きくなり、インデックスが大きくなり、データフレームのサイズを超えます。

更新完全2

KeyError: 6818L長い整数6818は、(L、ここでタイプを表す)df_housePrice_trainに有効なキーではないことを意味します。

必要なコード変更:

## KNN.py, line 61: 
#distances = []  # <- delete this line 

def compute_distances(features_instances, features_query): 
    distances = []  # <-- add here 
    # rest of the function body... 
+0

はい、それを指摘していただきありがとうございます。しかし、それは問題ではないようです(ただし、df_housePrice_train [価格 ']に置き換えてください)。コードはGITで更新されます。それで、最初にキーが最初の反復で6818であれば何らかの理由で6818Lが検索され、キーエラーがスローされます – user1122534

+0

私はこれが質問に答えると思う。しかし、私は全体のコードをチェックしていないので、その正確さを保証することはできません。 – ptrj

+0

こんにちは、私の質問に答えませんでした – user1122534

関連する問題