5

import numpy as np import matplotlib.pyplot as plt from collections import Counter np.random.seed(42) # Generate data data = np.random.rand(100) train_data = data[:50] test_data = data[50:] train_labels = np.array(["Class1" if x <= 0.5 else "Class2" for x in train_data]) # k-NN function def knn(train_data, train_labels, test_point, k): distances = np.abs(train_data - test_point) nearest_labels = train_labels[np.argsort(distances)[:k]] return Counter(nearest_labels).most_common(1)[0][0] # k values to test k_values = [1, 2, 3, 4, 5, 20, 30] # Loop over each k for k in k_values: predictions = np.array([knn(train_data, train_labels, x, k) for x in test_data]) class1 = test_data[predictions == "Class1"] class2 = test_data[predictions == "Class2"] plt.figure(figsize=(8, 3)) plt.scatter(train_data, np.zeros_like(train_data), c="black", label="Train", marker="x") if len(class1) > 0: plt.scatter(class1, np.ones_like(class1), c="blue", label="Class1 (Test)") if len(class2) > 0: plt.scatter(class2, np.ones_like(class2), c="red", label="Class2 (Test)") plt.title(f"k-NN Classification (k={k})") plt.yticks([]) plt.legend() plt.tight_layout() plt.show()

Comments

Popular posts from this blog

10

3

1