Spaces:
Sleeping
Sleeping
import gradio as gr | |
import numpy as np | |
from sklearn.linear_model import LinearRegression | |
import matplotlib.pyplot as plt | |
import io | |
from PIL import Image | |
def linear_regression(x_values, y_values): | |
# Convert string inputs to numpy arrays | |
X = np.array([float(x) for x in x_values.split(',')]).reshape(-1, 1) | |
y = np.array([float(y) for y in y_values.split(',')]) | |
# Perform linear regression | |
model = LinearRegression() | |
model.fit(X, y) | |
# Make predictions | |
y_pred = model.predict(X) | |
# Plotting | |
plt.figure(figsize=(10, 6)) | |
plt.scatter(X, y, color='blue') | |
plt.plot(X, y_pred, color='red') | |
plt.xlabel("X Values") | |
plt.ylabel("Y Values") | |
plt.title('Linear Regression') | |
# Save plot to a buffer and convert to PIL Image | |
buf = io.BytesIO() | |
plt.savefig(buf, format='png') | |
buf.seek(0) | |
image = Image.open(buf) | |
# Regression info | |
coef_info = f"Coefficient: {model.coef_[0]}\nIntercept: {model.intercept_}" | |
return image, coef_info | |
# Gradio interface | |
iface = gr.Interface( | |
fn=linear_regression, | |
inputs=[ | |
gr.components.Textbox(placeholder="Enter X values separated by commas (e.g., 1,2,3)", label="X Values"), | |
gr.components.Textbox(placeholder="Enter Y values separated by commas (e.g., 2,4,6)", label="Y Values") | |
], | |
outputs=[ | |
gr.components.Image(type="pil"), | |
gr.components.Textbox(label="Regression Info") | |
], | |
title="Automatic Linear Regression Modeling", | |
description="Enter X and Y values as comma-separated lists to perform linear regression." | |
) | |
# Launch the app | |
if __name__ == "__main__": | |
iface.launch() | |