File size: 2,603 Bytes
0404b49 3891746 0404b49 92c9ccb 0404b49 92c9ccb 4fdac11 a7bff9b 4fdac11 a7bff9b 92c9ccb 4fdac11 0404b49 4fdac11 0404b49 4fdac11 0404b49 3891746 2d064e0 3891746 0404b49 92c9ccb 4fdac11 0404b49 92c9ccb 4fdac11 92c9ccb 0404b49 4fdac11 0404b49 3891746 0404b49 4fdac11 92c9ccb 0404b49 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
import streamlit as st
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
def get_user_data_train():
data_points = []
labels = []
for i in range(5):
x = st.number_input(f"Enter x-coordinate for data point {i + 1}:")
y = st.number_input(f"Enter y-coordinate for data point {i + 1}:")
label = st.text_input(f"Enter label for data point {i + 1}:")
data_points.append([x, y])
labels.append(label)
return np.array(data_points), np.array(labels)
def get_user_data_test():
data_points = []
for i in range(1, 2, 1):
x = st.number_input(f"Enter x-coordinate for test data point {i + 1}:")
y = st.number_input(f"Enter y-coordinate for test data point {i + 1}:")
data_points.append([x, y])
return np.array(data_points)
def knn_classification(X_train, y_train, X_test, k_value):
knn_classifier = KNeighborsClassifier(n_neighbors=k_value)
knn_classifier.fit(X_train, y_train)
predictions = knn_classifier.predict(X_test)
return predictions
def plot_training_and_test_data(X_train, y_train, X_test, predictions):
unique_labels = np.unique(y_train)
# Plot training data
for label in unique_labels:
indices = np.where(y_train == label)
plt.scatter(X_train[indices, 0], X_train[indices, 1], label=f'Training ({label})')
# Plot test data with predicted labels
plt.scatter(X_test[:, 0], X_test[:, 1], label=f'Test (Predicted Labels)', marker='x', c=predictions)
plt.xlabel('X-coordinate')
plt.ylabel('Y-coordinate')
plt.title('Training and Test Data with Predicted Labels')
plt.legend()
st.pyplot()
def main():
st.title("K-Nearest Neighbor Classification App")
# Get user-defined data train
X_train, y_train = get_user_data_train()
# Choose the value of k
k_value = st.slider("Choose the value of k for k-nearest neighbors:", min_value=1, max_value=10, value=3)
# Get user-defined data test
X_test = get_user_data_test()
# Perform k-nearest neighbor classification
predictions = knn_classification(X_train, y_train, X_test, k_value)
# Plot training and test data
plot_training_and_test_data(X_train, y_train, X_test, predictions)
# Display results
st.subheader("Results:")
st.write("User-defined Data Points for Testing:")
st.write(X_test)
st.write(f"\nK-Nearest Neighbor Classification (k={k_value}):")
st.write("Predicted Labels:")
st.write(predictions)
if __name__ == "__main__":
main()
|