Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pandas as pd | |
| import numpy as np | |
| from sklearn.linear_model import LinearRegression | |
| import matplotlib.pyplot as plt | |
| import io | |
| from PIL import Image | |
| def linear_regression(input_csv): | |
| # Load dataset from binary | |
| df = pd.read_csv(io.BytesIO(input_csv)) | |
| # Assume the first column is X and the second column is Y | |
| if len(df.columns) < 2: | |
| return None, "CSV file must contain at least two columns." | |
| X = df.iloc[:, 0].values.reshape(-1, 1) | |
| y = df.iloc[:, 1].values | |
| # 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(df.columns[0]) | |
| plt.ylabel(df.columns[1]) | |
| 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 | |
| # Tutorial Markdown | |
| tutorial_markdown = """ | |
| ## Tutorial | |
| Follow these steps to use the application: | |
| 1. Prepare a CSV file with two columns. The first column should be your independent variable (X), and the second column your dependent variable (Y). | |
| 2. Upload the CSV file using the 'File Upload' field. | |
| 3. The application will automatically process the file, perform linear regression, and display the results and a plot. | |
| """ | |
| # Gradio interface | |
| iface = gr.Interface( | |
| fn=linear_regression, | |
| inputs=[gr.components.File(type="binary")], | |
| outputs=[ | |
| gr.components.Image(type="pil"), | |
| gr.components.Textbox(label="Regression Info") | |
| ], | |
| title="Automatic Linear Regression Modeling", | |
| description="Upload a CSV file with two columns. The first column will be used as X (independent variable) and the second as Y (dependent variable).", | |
| layout="vertical" | |
| ).add_instructions(tutorial_markdown) | |
| # Launch the app | |
| if __name__ == "__main__": | |
| iface.launch() | |