KNN algoritmasıyla ilgili yardıma ihtiyacım var

Katılım
10 Ocak 2023
Mesajlar
11
Puanları
1
Yaş
25
Herkese merhaba
Bunların hepsi benim için yeni. ve şu anda bu web sitesinde öğrendiğim Python'da K-En Yakın Komşular (KNN) yönteminin uygulanmasını içeren bir proje üzerinde çalışıyorum. Ancak, kodumun çökmesine neden olan bir sorunla karşılaşıyorum. Lütfen bana yardım eder misin?
İşte kodumun ilgili bölümü:
Kod:
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# Load the Iris dataset
iris = load_iris()
X = iris.data
y = iris.target

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Implement KNN
k = 5
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)

# Make predictions on the test set
y_pred = knn.predict(X_test)

# Calculate accuracy
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
Kodu çalıştırdığımda aşağıdaki hatayı alıyorum:
Kod:
ValueError: Found input variables with inconsistent numbers of samples: [120, 30]
Verileri uygun şekilde bölümlere ayırdığım göz önüne alındığında, örnek miktarının neden tutarsız olduğundan emin değilim. Bu sorunu neyin oluşturabileceği ve nasıl düzeltebileceğim hakkında bir fikriniz var mı? Çok teşekkür ederim!
 
Hatanın nedeni, verileri train_test_split fonksiyonunu kullanarak uygun şekilde bölmek yerine, train_test_split'i yanlış bir şekilde çağırmış olmanızdır. Hata mesajında da belirtildiği gibi, giriş verilerinizin (input variables) boyutları uyumsuzdur.

train_test_split fonksiyonu, verileri X ve Y olarak iki ayrı parçaya böler ve belirttiğiniz test boyutuna göre test veri kümesini oluşturur. Ancak kodunuzda, train_test_split fonksiyonunu çağırırken yanlışlıkla verileri yalnızca bir kez bölmüşsünüz ve X ve Y verilerini bölmek yerine yalnızca X verilerini bölmüşsünüz. Böylece, X verileriniz 120 örneğe sahipken, Y verileriniz yalnızca 30 örnek içeriyor ve bu nedenle boyutlar uyumsuz hale geliyor.

Çözüm için, X ve Y verilerini train_test_split fonksiyonunu iki kez çağırarak uygun şekilde bölmelisiniz.

İşte düzeltilmiş kod:

Kod:
pythonCopy code
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# Load the Iris dataset
iris = load_iris()
X = iris.data
y = iris.target

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Implement KNN
k = 5
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)

# Make predictions on the test set
y_pred = knn.predict(X_test)

# Calculate accuracy
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

Yardımcı olan ODTÜ öğretim üyesi arkadaşıma teşekkür ederim

Bu düzeltmeyle, X ve Y verileri uygun şekilde bölünmüş olacak ve kodunuz hatasız bir şekilde çalışacaktır.
Kolay gelsin
 
Son düzenleme:

Yeni mesajlar

Forum istatistikleri

Konular
128,193
Mesajlar
915,739
Kullanıcılar
449,968
Son üye
ibrahimkalebayir38@gmail.

Yeni konular

Geri
Üst