Spaces:
Runtime error
Runtime error
import matplotlib.pyplot as plt | |
import numpy as np | |
import seaborn as sns | |
import streamlit as st | |
from sklearn.datasets import make_regression | |
from sklearn.metrics import mean_squared_error | |
from sklearn.neighbors import KNeighborsRegressor | |
st.subheader("K nearest neighbor (KNN) Regressor") | |
st_col = st.columns(1)[0] | |
K = st.slider( | |
"Number of nearest neighbors (K)", min_value=1, max_value=10, value=5, step=1 | |
) | |
option = st.selectbox( | |
"Select Distance Metric", ("L1(Manhattan)", "L2(Euclidean Distance)") | |
) | |
X, y = make_regression(n_samples=100, n_features=1, noise=0.3, random_state=42) | |
ntrain = 30 | |
x_train = X[:ntrain] | |
y_train = y[:ntrain] | |
x_test = X[ntrain:] | |
y_test = y[ntrain:] | |
if str(option) == "L1(Manhattan)": | |
metric = "manhattan" | |
else: | |
metric = "euclidean" | |
knn = KNeighborsRegressor(n_neighbors=K, metric=metric) | |
knn.fit(x_train, y_train) | |
y_pred = knn.predict(x_test) | |
plt.figure() | |
plt.plot(y_test[:30], "C0s", label="True Points (Test)") | |
plt.plot(y_pred[:30], "C1*", label="Predictions (Test)") | |
plt.xlabel("X") | |
plt.ylabel("Y") | |
plt.legend(loc="upper left") | |
plt.ylim(-90,90) | |
sns.despine(right=True, top=True) | |
with st_col: | |
st.pyplot(plt) | |
error = mean_squared_error(y_test, y_pred) | |
st.write("The mean squared error is %.2f" % error) | |
hide_streamlit_style = """ | |
<style> | |
#MainMenu {visibility: hidden;} | |
footer {visibility: hidden;} | |
subheader {alignment: center;} | |
</style> | |
""" | |
st.markdown(hide_streamlit_style, unsafe_allow_html=True) | |
st.markdown( | |
""" | |
The above plot shows the True values and Predictions for 30 points in the test set. | |
It can be observed that the optimal value of K is 3 for the given dataset. | |
""", | |
unsafe_allow_html=True, | |
) | |