Desde ingeniero de materiales hasta desarrollador de aprendizaje automático: predecir la resistencia a la tracción con Python y Web Tech
Cuando comencé mi viaje en la ciencia de los materiales, nunca imaginé que algún día implementaría mis propios modelos de aprendizaje automático en la web. Pero hoy, tengo una aplicación web completamente funcional que predice la resistencia a la tracción basada en los parámetros del material, y la construí usando Python, Aprendizaje automático y herramientas de desarrollo web modernas.
Este artículo es mi historia, desde datos sin procesar en Excel hasta una aplicación en vivo implementada en la nube. Ya sea que sea un ingeniero curioso sobre el aprendizaje automático o un desarrollador que quiera aplicar IA en un dominio del mundo real, espero que mi viaje ayude a iluminar el camino.
El problema de ingeniería
Como ingeniero de materiales, la resistencia a la tracción es una de las propiedades mecánicas más críticas con las que trabajamos. Define cómo un material se comporta bajo estrés y determina sus aplicaciones.
Tradicionalmente, la predicción de la resistencia a la tracción requirió experimentos de laboratorio, que requieren mucho tiempo y costosos. Pero, ¿qué pasaría si pudiéramos predecirlo automáticamente usando el aprendizaje automático ?
Mi conjunto de datos
Comencé con un conjunto de datos que incluye propiedades como:
- Relación matriz-llenador
- Densidad
- Módulo de elasticidad
- Cantidad de endurecedor
- Contenido epoxi
- punto de inflamabilidad
- Densidad de superficie
- Consumo de resina
- Módulo de tracción
La variable objetivo era la resistencia a la tracción (MPA) .
Utilicé Excel y Pandas para limpiar y preprocesar los datos. Algunos de ingeniería básica de características (como log_density
y modulus_squared
) ayudó a mejorar el rendimiento.
Entrenamiento del modelo de aprendizaje automático
Yo usé scikit-learn
Para entrenar a un regresor bosque al azar . Aquí está el fragmento de entrenamiento:
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
important_features = [
'hardener_amount',
'surface_density',
'tensile_modulus',
'flash_point',
'epoxy_content',
'resin_consumption'
]
X = df[important_features]
y = df['tensile_strength']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = RandomForestRegressor(random_state=42)
model.fit(X_train, y_train)
El modelo logró una puntuación R² decente, suficiente para avanzar con el despliegue.
Construyendo la aplicación web con simplificación
A continuación, creé una aplicación de transmisión para permitir a los usuarios ingresar propiedades del material y obtener una predicción instantánea de resistencia a la tracción.
La interfaz de usuario fue mínima pero efectiva, solo unos pocos campos de entrada y un gran botón de "predicción".
import streamlit as st
import joblib
import pandas as pd
model = joblib.load("tensile_model.pkl")
st.title("Smart Materials: Tensile Strength Predictor")
hardener_amount = st.number_input("Hardener Amount (m%)", 0.0, 100.0)
# ... other inputs ...
input_data = pd.DataFrame([{
'hardener_amount': hardener_amount,
# ...
}])
if st.button("Predict Strength"):
prediction = model.predict(input_data)[0]
st.success(f"Predicted Tensile Strength: {prediction:.2f} MPa")
Implementación en la web con Fly.io
Esta fue la parte más difícil, pero la más gratificante.
Las aplicaciones de transmisión deben ejecutarse en un servidor y escuchar en 0.0.0.0
, y Fly.io (una plataforma de nube liviana) fue el ajuste perfecto.
Escribí un Dockerfile
, creó un fly.toml
, e implementado usando:
fly deploy
Después de lidiar con problemas como:
- Enlace de puerto (
0.0.0.0:8080
) - Los certificados HTTPS no asignan automáticamente
- Reescribir el comando Docker
... Finalmente lo vi en vivo. Mi aplicación. Predecir la resistencia a la tracción. En la nube.
Lo que aprendí
Este viaje me enseñó mucho:
- El aprendizaje automático es accesible para los ingenieros.
- El desarrollo web deja ciencia de datos con usuarios reales.
- El despliegue es difícil, pero vale la pena.
- No necesita ser un ingeniero de software para crear herramientas potentes.
Que sigue
Planeo continuar refinando esta aplicación:
- Mejor UI/UX con componentes de línea de transmisión
- Guardar el historial de predicción
- Agregar múltiples opciones de modelo
- Pruebe el aprendizaje profundo para propiedades más complejas
¡Gracias por leer!
Déjame saber en qué estás trabajando en los comentarios y sígueme para obtener más información sobre Python, ML e Ingeniería.
No hay comentarios.:
Publicar un comentario