lab5
import numpy as np
import matplotlib.pyplot as plt
from collections import Counter
x_values = np.random.rand(100)
labels = np.array(["Class1" if x <= 0.5 else "Class2" for x in x_values[:50]])
print(x_values)
print("--------------------------------------")
print(labels)
def knn_classify(x_train, y_train, x_test, k):
predictions = []
for x in x_test:
distances = np.abs(x_train - x)
k_nearest_indices = np.argsort(distances)[:k]
k_nearest_labels = y_train[k_nearest_indices]
most_common = Counter(k_nearest_labels).most_common(1)[0][0]
predictions.append(most_common)
return np.array(predictions)
k_values = [1, 2, 3, 4, 5, 20, 30]
results = {}
for k in k_values:
predicted_labels = knn_classify(x_values[:50], labels, x_values[50:], k)
results[k] = predicted_labels
plt.figure(figsize=(10, 6))
for k in k_values:
plt.figure(figsize=(10, 6))
plt.scatter(
x_values[:50],
[1] * 50,
c=["blue" if lbl == "Class1" else "red" for lbl in labels],
label="Labeled Data"
)
plt.scatter(
x_values[50:],
[2] * 50,
c=["blue" if lbl == "Class1" else "red" for lbl in results[k]],
label=f"Classified Data (k={k})"
)
plt.xlabel("x values")
plt.ylabel("Classified/Unclassified")
plt.title(f"KNN Classification Clusters (k={k})")
plt.legend()
plt.show()
for k, preds in results.items():
print(f"Results for k={k}:")
print(preds)
print("-")
Comments
Post a Comment