Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import numpy as np | |
import seaborn as sns | |
import matplotlib.pyplot as plt | |
from sklearn.model_selection import train_test_split | |
from sklearn.linear_model import LinearRegression | |
from sklearn.metrics import mean_squared_error, r2_score | |
# T铆tulo de la aplicaci贸n | |
st.title("Regresi贸n Lineal Simple: Predicci贸n de Peso basado en Altura") | |
# Cargar el dataset | |
url = "https://raw.githubusercontent.com/burnoutminer/Heights-and-Weights-Dataset/master/data.csv" | |
data = pd.read_csv(url) | |
# Mostrar el dataset en la aplicaci贸n | |
st.subheader("Dataset de Altura y Peso") | |
st.write(data.head()) | |
# Exploraci贸n de datos | |
st.subheader("Relaci贸n entre Altura y Peso") | |
fig, ax = plt.subplots() | |
sns.scatterplot(x='Height', y='Weight', data=data, ax=ax) | |
plt.title('Relaci贸n entre Altura y Peso') | |
plt.xlabel('Altura (pulgadas)') | |
plt.ylabel('Peso (libras)') | |
st.pyplot(fig) | |
# Dividir el dataset en entrenamiento y prueba | |
X = data[['Height']] # Variable independiente (altura) | |
y = data['Weight'] # Variable dependiente (peso) | |
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) | |
# Crear y entrenar el modelo de regresi贸n lineal simple | |
model = LinearRegression() | |
model.fit(X_train, y_train) | |
# Predecir en el conjunto de prueba | |
y_pred = model.predict(X_test) | |
# Evaluar el modelo | |
mse = mean_squared_error(y_test, y_pred) | |
r2 = r2_score(y_test, y_pred) | |
# Mostrar m茅tricas del modelo | |
st.subheader("Evaluaci贸n del Modelo") | |
st.write(f'Error Cuadr谩tico Medio (MSE): {mse:.2f}') | |
st.write(f'Coeficiente de Determinaci贸n (R虏): {r2:.2f}') | |
# Gr谩fico de regresi贸n con l铆nea de tendencia | |
st.subheader("L铆nea de Regresi贸n") | |
fig, ax = plt.subplots() | |
plt.scatter(X_test, y_test, color='blue', label='Datos reales') | |
plt.plot(X_test, y_pred, color='red', label='L铆nea de regresi贸n') | |
plt.title('Regresi贸n Lineal Simple: Altura vs Peso') | |
plt.xlabel('Altura (pulgadas)') | |
plt.ylabel('Peso (libras)') | |
plt.legend() | |
st.pyplot(fig) | |
# Coeficientes del modelo | |
st.subheader("Coeficientes del Modelo") | |
st.write(f'Intercepto (b0): {model.intercept_:.2f}') | |
st.write(f'Coeficiente de Altura (b1): {model.coef_[0]:.2f}') | |
# Entrada de usuario para predecir el peso | |
st.subheader("Predicci贸n de Peso") | |
height_input = st.number_input("Ingresa la altura (en pulgadas):", min_value=50.0, max_value=100.0, value=70.0) | |
# Predecir el peso basado en la altura ingresada | |
if st.button("Predecir Peso"): | |
predicted_weight = model.predict([[height_input]]) | |
st.write(f"El peso predicho para una altura de {height_input} pulgadas es: **{predicted_weight[0]:.2f} libras**.") |