2016-04-06 7 views
0

Ich führe den folgenden Code und es läuft gut für die erste Iteration und wenn die zweite Iteration startet, gibt es mir einen Schlüsselfehler. Ich stelle fest, dass dem Schlüssel automatisch eine Zeichenfolge "L" hinzugefügt wird, wenn die zweite Iteration beginnt. Link zu meinem Code unten:2. Iteration Hinzufügen von zusätzlichen Zeichen in Pandas/Numpy

Code for KNN having issues here

Verbindung für die Daten, die ich benutze ist unten:

Data used for the code

nicht sicher, warum es geschieht. Kann jemand bitte mich wissen lassen, was das Problem verursacht. Hilfe wird sehr geschätzt !! 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

Wenn Sie Ihren gesamten Code und Daten hier abladen, ich glaube nicht, dass Sie viele Antworten bekommen. Versuchen Sie, Ihr Problem zu isolieren und es kurz und bündig zu machen. Dann erhalten Sie viel mehr Antwort. – Hun

+0

@Hun lieferte den Code mit den Daten, so dass jemand den Code direkt ausführen kann und den Fehler sieht. Es muss die vorherigen Schritte durchführen, um diesen Schritt zu erreichen, wo ich den Fehler – user1122534

+0

noch ziemlich langen Code und eine große Menge von Daten habe. Schau dir einfach andere Fragen an und sieh, wie andere Leute, die mehrere Antworten bekommen, es tun. – Hun

Antwort

0

Nun schaute ich nur auf Ihre get_numpy_data Definition und denke, dass es nicht funktioniert, wie Sie es erwarten würden. Zum Beispiel ist die Linie

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

scheint df_housePrice_train zu ändern. Und output_train wird ein NP-Array mit einer Zeichenfolge "price".


Update:

Die Linie distances = [] wirklich innerhalb der Funktion compute_distances sein sollte. Diese Funktion hängt bei jeder Ausführung Elemente an distances an. Als nächstes werden Indizes (Positionen) einiger der Elemente an einen Datenrahmen angelegt. Bei der ersten Ausführung funktioniert alles gut, aber später wächst die Liste und einige Indizes werden größer - die Größe des Datenrahmens überschreitend.

aktualisieren 2

der Vollständigkeit halber: KeyError: 6818L bedeutet, dass die lange Ganzzahl 6818 (L einen Typ bezeichnet hier) in df_housePrice_train kein gültiger Schlüssel ist.

benötigte Code-Änderung:

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

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

ja danke für das hinweisend. Dies scheint jedoch nicht das Problem zu sein (obwohl es durch df_housePrice_train ['price'] ersetzt wurde). Der Code wird auf GIT aktualisiert. Also, was es tut, ist, wenn der Schlüssel 6818 in der zweiten Iteration ist, ist es aus irgendeinem Grund sucht 6818L und wirft einen Schlüsselfehler – user1122534

+0

Fund es. Ich denke, das beantwortet die Frage. Aber ich habe den ganzen Code nicht überprüft, also kann ich seine Richtigkeit nicht garantieren. – ptrj

+0

Hallo, das hat meine Frage nicht beantwortet – user1122534

Verwandte Themen