Spaces:
Running
Running
import streamlit as st | |
import numpy as np | |
import matplotlib.pyplot as plt | |
import torch | |
import torch.nn as nn | |
# Set a seed for reproducibility | |
torch.manual_seed(59) | |
# Define the Linear Model | |
class LinearModel(nn.Module): | |
def __init__(self, in_features, out_features): | |
super(LinearModel, self).__init__() | |
self.linear = nn.Linear(in_features, out_features) | |
def forward(self, x): | |
return self.linear(x) | |
# Instantiate the model | |
model = LinearModel(1, 1) | |
# Print model weight and bias | |
print(f'Model weight: {model.linear.weight.item()}') | |
print(f'Model bias: {model.linear.bias.item()}') | |
# Streamlit app title | |
st.title('Interactive Scatter Plot with Noise and Number of Data Points') | |
# Sidebar sliders for noise and number of data points | |
noise_level = st.sidebar.slider('Noise Level', 0.0, 1.0, 0.1, step=0.01) | |
num_points = st.sidebar.slider('Number of Data Points', 10, 100, 50, step=5) | |
# Generate data | |
np.random.seed(59) | |
x = np.linspace(0, 10, num_points).reshape(-1, 1).astype(np.float32) | |
with torch.no_grad(): | |
x_tensor = torch.tensor(x) | |
y_tensor = model(x_tensor) | |
y = y_tensor.numpy().flatten() + noise_level * np.random.randn(num_points) | |
# Create scatter plot | |
fig, ax = plt.subplots() | |
ax.scatter(x, y, alpha=0.6) | |
ax.set_title('Scatter Plot with Noise and Number of Data Points') | |
ax.set_xlabel('X-axis') | |
ax.set_ylabel('Y-axis') | |
# Display plot in Streamlit | |
st.pyplot(fig) |