Spaces:
Sleeping
Sleeping
import numpy as np | |
import gradio as gr | |
import pandas as pd | |
def homework01_solution1(K, X1, X2): | |
K = int(K) | |
# Verify your solutions by code | |
import numpy as np | |
X = np.array([[2.0, 5.0], [3.0, 4.0], [3.0, 2.0], [1.0, 3.0], [5.0, 2.0], [7.0, 1.0], | |
[6.0, 3.0], [7.0, 4.0]]) | |
y = np.array([2.9,4.2,5.8,3.2,8.9,9.2,7.4,8.2]) | |
import pandas as pd | |
train_data = pd.DataFrame(X, columns=['X1', 'X2']) | |
train_data['Label (Y)'] = y | |
from sklearn.neighbors import KNeighborsRegressor | |
#(1) predict class for point (3,3) with K = 3 | |
neigh = KNeighborsRegressor(n_neighbors=K) | |
neigh.fit(X, y) | |
predicted_label = neigh.predict(np.array([[X1, X2]]))[0] | |
#(Q) calculate squared error | |
pred = neigh.predict(X) | |
squared_error = (pred-y)**2 | |
train_data['Predicted Label ('+str(K)+'-NN)'] = pred | |
train_data['Squaredd Error'] = squared_error | |
(nb_dist, nb_indice) = neigh.kneighbors(np.array([[X1, X2]]), K) | |
import pandas as pd | |
results = pd.DataFrame(columns=['Rank of closest neighbor', 'Features (X_1,X_2)', 'Label (Y)', 'Distance to query data']) | |
for i in range(K): | |
idx = nb_indice[0][i] | |
fea = X[idx].tolist() | |
fea = '({})'.format(', '.join(map(str, fea))) | |
dist = nb_dist[0][i] | |
label = y[idx] | |
#print(idx, fea, dist, label) | |
# Dictionary to append | |
new_data = {'Rank of closest neighbor': i, 'Features (X_1,X_2)': fea, 'Label (Y)':label , 'Distance to query data': dist} | |
tmp = pd.DataFrame(new_data, index=[0]) | |
# Append dictionary to DataFrame | |
#data = data.append(new_data, ignore_index=True) | |
results = pd.concat([results, tmp], ignore_index=True) | |
results = results.sort_values(by='Rank of closest neighbor') | |
results | |
return train_data, results, predicted_label | |
### configure inputs | |
set_K = gr.Number(value=7) | |
set_X1 = gr.Number(value=1) | |
set_X2 = gr.Number(value=2) | |
### configure outputs | |
set_output_traindata = gr.Dataframe(type='pandas', label ='Train Dataset') | |
set_output_q1a = gr.Dataframe(type='pandas', label ='Question 1: KNN-Regressor Search') | |
set_output_q1b = gr.Textbox(label ='Question 1: KNN-Regressor Prediction') | |
### configure Gradio | |
interface = gr.Interface(fn=homework01_solution1, | |
inputs=[set_K, set_X1, set_X2], | |
outputs=[set_output_traindata, set_output_q1a, set_output_q1b], | |
title="CSCI4750/5750(hw01-PartI): Mathematics for KNN (Question 1: KNN-Regressor Search)", | |
description= "Click examples below for a quick demo", | |
theme = 'huggingface', | |
live=True | |
) | |
interface.launch(debug=True) |