2016-04-06 6 views
0

Aşağıdaki kodu çalıştırıyorum ve ilk yineleme için iyi çalışıyor ve ikinci yineleme başladığında bana önemli bir hata veriyor. İkinci iterasyon başladığında tuşa otomatik olarak eklenen bir "L" dizesi olduğunu fark ettim. Aşağıda benim koduna Bağlantı: Ben kullanıyorum veriler için2. Yineleme Pandalar/Numpy'de ekstra karakter ekleme

Code for KNN having issues here

Bağlantı aşağıdaki gibidir:

Data used for the code

o neden oluyor emin değilim. Birisi bana sorunun nedenini bilmeme izin verebilir. Yardım büyük takdir! 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

, sana birçok yanıtları alacak sanmıyorum. Sorununuzu izole etmeye çalışın ve kısa ve öz bir noktaya getirin. Sonra, çok daha fazla tepki alacaksınız. – Hun

+0

@Hun, kodun birisinin kodu doğrudan çalıştırabilmesi için veriyi sağlamasıyla hatayı görürsünüz. – user1122534

+0

hala oldukça uzun kod ve büyük bir veri kümesi hatası yaşıyorum bu adımı ulaşmak için önceki adımları gerçekleştirmek zorundadır. Diğer sorulara bakın ve birden fazla cevap alan diğer kişilerin bunu nasıl yaptığını görün. – Hun

cevap

0

Şimdi sadece get_numpy_data tanımınıza baktım ve beklediğiniz gibi çalışmadığını düşünüyorum. Örneğin, satır

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

df_housePrice_train değiştirmek gibi görünüyor. Ve output_train, "price" dizesini içeren bir np dizisi haline gelir.


Güncelleme:

hat distances = [] gerçekten fonksiyonu compute_distances içeride olmalıdır. Bu işlev, her uygulamada öğeleri distances'a ekler. Ardından, bazı elemanların indeksleri (konumları) bir veri çerçevesine uygulanır. İlk uygulamada her şey iyi çalışıyor, ancak daha sonra liste büyüyor ve bazı endeksler veri çerçevesinin büyüklüğünü aşıyor.

Güncelleştirme bütünlüğü için 2

: KeyError: 6818L uzun tamsayı 6818 (L burada bir tür anlamına gelir) df_housePrice_train geçerli bir anahtar olmadığı anlamına gelir.

Gerekli kod değişikliği: Burada senin tüm kod ve veri dökümü olursa

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

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

evet bunu işaret ettiğin için teşekkür ederim. Ancak, bu sorun görünmüyor (df_housePrice_train ['fiyat'] ile olsa da). Kod GIT'de güncellenir. Öyleyse, başlangıçta anahtarın ikincilikte 6818 olması, bir nedenden dolayı 6818L'nin gözükmesi ve – user1122534

+0

Fonu'nu füze etmesidir. Bence bu soruya cevap veriyor. Ama bütün kodu kontrol etmedim, bu yüzden doğruluğunu garanti edemezsin. – ptrj

+0

Merhaba, bu soruya cevap vermedim – user1122534