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

Popular posts from this blog

lab9

lab2

lab10