""
Mostrando las entradas con la etiqueta aprendizaje automatico. Mostrar todas las entradas
Mostrando las entradas con la etiqueta aprendizaje automatico. Mostrar todas las entradas

domingo, 6 de julio de 2025

Articulo: Predecir la resistencia a la traccion de un material con Python

 

Desde ingeniero de materiales hasta desarrollador de aprendizaje automático: predecir la resistencia a la tracción con Python y Web Tech

3 minutos de lectura, 30 de abril de 2025 
 

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_densityy 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.

 

 



viernes, 27 de junio de 2025

Scikit-Learn 1.7 Novedades

 

 Lo más destacado para Scikit-Learn 1.7

¡Nos complace anunciar el lanzamiento de Scikit-Learn 1.7! Muchas correcciones de errores y se agregaron mejoras, así como algunas nuevas características clave. Debajo de nosotros Detalle los aspectos más destacados de esta versión. Para una lista exhaustiva de Todos los cambios , consulte las notas de la versión .

Para instalar la última versión (con PIP):

>>pip install --upgrade scikit-learn

o con conda:

>>conda install -c conda-forge scikit-learn

Representación HTML de estimador mejorada

La representación HTML de los estimadores ahora incluye una sección que contiene la lista de parámetros y sus valores. Los parámetros no predeterminados se destacan en naranja. Una copia El botón también está disponible para copiar el nombre del parámetro "totalmente calificado" sin el Necesito llamar al get_params método. Es particularmente útil al definir un Grid de parámetros para una búsqueda de cuadrícula o una búsqueda aleatoria con una tubería compleja.

Vea el ejemplo a continuación y haga clic en los diferentes bloques del estimador para ver el Representación HTML mejorada.

>>from sklearn.linear_model import LogisticRegression
>>from sklearn.pipeline import make_pipeline
>>from sklearn.preprocessing import StandardScaler

>>model = make_pipeline(StandardScaler(with_std=False), LogisticRegression(C=2.0))
>>model
>>>
Tubería
?
no
Parámetros
    pasos     [('estándaresscaler', ...), ('LogisticRegression', ...)]
    transform_input     Ninguno
    memoria     Ninguno
    verboso     FALSO
Estandarias
?
Parámetros
    Copiar     Verdadero
    With_mean     Verdadero
    with_std     FALSO
Recreación logística
?
Parámetros
    pena     'L2'
    dual     FALSO
    peaje     0.0001
    do     2.0
    Fit_intercept     Verdadero
    intercept_caling     1
    class_weight     Ninguno
    random_state     Ninguno
    solucionador     'lbfgs'
    max_iter     100
    múltiple     'Depreciado'
    verboso     0
    Warm_Start     FALSO
    n_jobs     Ninguno
    l1_ratio     Ninguno


Establecimiento de validación personalizada para estimadores de impulso de gradiente basado en histogramas

El ensemble.HistGradientBoostingClassifiery ensemble.HistGradientBoostingRegressor ahora admite pasar directamente una costumbre Validación establecida para detener temprano al fit método, usando el X_val, y_val, y sample_weight_val parámetros. En pipeline.Pipeline, el conjunto de validación X_val se puede transformar a lo largo con X usando el transform_input parámetro.

>>import sklearn
>>from sklearn.datasets import make_classification
>>from sklearn.ensemble import HistGradientBoostingClassifier
>>from sklearn.model_selection import train_test_split
>>from sklearn.pipeline import Pipeline
>>from sklearn.preprocessing import StandardScaler

>>sklearn.set_config(enable_metadata_routing=True)

>>X, y = make_classification(random_state=0)
>>X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=0)

>>clf = HistGradientBoostingClassifier()
>>clf.set_fit_request(X_val=True, y_val=True)

>>model = Pipeline([("sc", StandardScaler()), ("clf", clf)], transform_input=["X_val"])
>>model.fit(X, y, X_val=X_val, y_val=y_val)
>>>

Tubería
?
I
Parámetros
    pasos     [('sc', ...), ('clf', ...)]
    transform_input     ['X_val']
    memoria     Ninguno
    verboso     FALSO
Estandarias
?
Parámetros
    Copiar     Verdadero
    With_mean     Verdadero
    with_std     Verdadero
Histgradient BoostingClassifier
?
Parámetros
    pérdida     'Log_loss'
    aprendizaje_rate     0.1
    max_iter     100
    max_leaf_nodes     31
    max_depth     Ninguno
    min_samples_leaf     20
    l2_regularización     0.0
    max_features     1.0
    max_bins     255
    categórico_Features     'from_dtype'
    monotonic_cst     Ninguno
    interacción_cst     Ninguno
    Warm_Start     FALSO
    Early_stopping     'auto'
    tanteo     'pérdida'
    Validation_Fraction     0.1
    n_iter_no_change     10
    peaje     1e-07
    verboso     0
    random_state     Ninguno
    class_weight     Ninguno



Trazar curvas ROC de resultados de validación cruzada

La clase metrics.RocCurveDisplay tiene un nuevo método de clase from_cv_results que permite trazar fácilmente múltiples curvas ROC de los resultados de model_selection.cross_validate.

>>from sklearn.datasets import make_classification
>>from sklearn.linear_model import LogisticRegression
>>from sklearn.metrics import RocCurveDisplay
>>from sklearn.model_selection import cross_validate

>>X, y = make_classification(n_samples=150, random_state=0)
>>clf = LogisticRegression(random_state=0)
>>cv_results = cross_validate(clf, X, y, cv=5, return_estimator=True, return_indices=True)
>>_ = RocCurveDisplay.from_cv_results(cv_results, X, y) 
destacados de lanzamiento de la trama 1 7 0 
 

API API de matriz

Se han actualizado varias funciones para admitir entradas compatibles con la API de matriz desde Versión 1.6, especialmente métricas de la sklearn.metrics módulo.

Además, ya no es necesario instalar el array-api-compat Paquete para usar El soporte de API de matriz experimental en Scikit-Learn.

Consulte la de soporte de la API de matriz para obtener instrucciones para usar Scikit-Learn con bibliotecas compatibles con API de matriz como Pytorch o Cupy.

Consistencia de API mejorada de Perceptron de múltiples capas

El neural_network.MLPRegressor tiene un nuevo parámetro loss y ahora apoya La pérdida de "Poisson" además de la pérdida predeterminada "Squared_error". Además, el neural_network.MLPClassifiery neural_network.MLPRegressor Los estimadores ahora admiten pesos de muestra. Se han realizado estas mejoras para mejorar la consistencia de estos estimadores. Con respecto a los otros estimadores en Scikit-Learn.

Migración hacia matrices escasas

Para preparar la migración escasa de matrices dispersas a matrices dispersas , Todos los estimadores de Scikit-Learn que aceptan matrices dispersas como entrada ahora también aceptan matrices dispersas.

Tiempo de ejecución total del script: (0 minutos 0.206 segundos)

jueves, 26 de junio de 2025

Scikit-Learn: Sumergirse superficialmente en esta libreria de Python

Fuente: https://scikit-learn.org/stable/        Traducción: Google

Scikit-Learn

Aprendizaje automático en Python

  • Herramientas simples y eficientes para el análisis predictivo de datos.
  • Accesible para todos y reutilizable en diversos contextos
  • Construido sobre NumPy, SciPy y matplotlib
  • Código abierto, utilizable comercialmente: licencia BSD 
 
Clasificación

Identificar a qué categoría pertenece un objeto.

Aplicaciones: Detección de spam, reconocimiento de imágenes.
Algoritmos: impulso de gradiente , vecinos más cercanos , bosque aleatorio , regresión logística , y más ...
Comparación de clasificadores


Regresión

Predecir un atributo de valor continuo asociado con un objeto.

Aplicaciones: respuesta de drogas, precios de acciones.
Algoritmos: impulso de gradiente , vecinos más cercanos , bosque aleatorio , cresta , y más ...
Regresión del árbol de decisión con HGBT 
 
Agrupación

Agrupación automática de objetos similares en conjuntos.

Aplicaciones: segmentación del cliente, resultados de experimentos de agrupación.
Algoritmos: K-Means , Hdbscan , agrupación jerárquica , y más ...
Una demostración de la agrupación de K-Means en los datos de dígitos escritos a mano 

Reducción de dimensionalidad

Reducir el número de variables aleatorias a considerar.

Aplicaciones: visualización, mayor eficiencia.
Algoritmos: PCA , selección de características , factorización de matriz no negativa , y más ...

Ejemplo de PCA con Iris Data-set 
 
Selección de modelo

Comparar, validar y elegir parámetros y modelos.

Aplicaciones: precisión mejorada a través de la sintonización de parámetros.
Algoritmos: búsqueda de cuadrícula , Validación cruzada , métricas , y más ...
Demostración de evaluación multimétrica en cross_val_score y GridSearchCV 

Preprocesamiento

Extracción y normalización de características.

Aplicaciones: Transformación de datos de entrada como texto para usar con algoritmos de aprendizaje automático.
Algoritmos: preprocesamiento , extracción de características , y más ...
Demostrando las diferentes estrategias de KBinsDiscretizer  

Noticias

  • Desarrollo continuo: Scikit-Learn 1.8 (ChangeLog) .
  • Junio ​​de 2025. Scikit-Learn 1.7.0 está disponible para descargar ( ChangeLog ).
  • Enero de 2025. Scikit-Learn 1.6.1 está disponible para descargar ( ChangeLog ).
  • Diciembre de 2024. Scikit-Learn 1.6.0 está disponible para descargar ( ChangeLog ).
  • Septiembre de 2024. Scikit-Learn 1.5.2 está disponible para descargar ( ChangeLog ).
  • Julio de 2024. Scikit-Learn 1.5.1 está disponible para descargar ( ChangeLog ).
  • Mayo de 2024. Scikit-Learn 1.5.0 está disponible para descargar ( ChangeLog ).
  • Todos los lanzamientos: qué hay de nuevo (ChangeLog) .

Comunidad



domingo, 9 de febrero de 2025

Microsoft Learn / Exploración y análisis de datos con Python / Reto

 

Resumen

Completado 100 XP

En este módulo, ha aprendido a usar Python para explorar, visualizar y manipular datos. La exploración de datos es la base de la ciencia de datos y un elemento clave en el análisis de datos y el aprendizaje automático.

El aprendizaje automático es un subconjunto de la ciencia de datos que se ocupa del modelado predictivo. En otras palabras, el aprendizaje automático usa datos para crear modelos predictivos, con el fin de predecir valores desconocidos. Podría utilizar el aprendizaje automático para predecir la cantidad de alimentos que debe pedir un supermercado, o para identificar plantas en fotografías.

Lo que hace el aprendizaje automático es identificar las relaciones entre los valores de datos que describen las propiedades de algo, (sus características, como la altura y el color de una planta), y el valor que se quiere predecir (la etiqueta, como las especies de plantas). Estas relaciones se integran en un modelo a través de un proceso de entrenamiento.

Reto: Análisis de datos de vuelos

Si los ejercicios de este módulo le han inspirado para intentar explorar los datos por sí mismo, ¿por qué no acepta el reto de un conjunto de datos del mundo real que contenga registros de vuelos del Departamento de Transporte de Estados Unidos? Encontrará el reto en el cuaderno 01 - Flights Challenge.ipynb.

Nota

El tiempo para completar este desafío opcional no se incluye en el tiempo estimado para este módulo de formación. Puede dedicarle tanto tiempo como quiera.

 

Entradas recientes

LifeLines: Lineas de vida en Python

 Fuente:  https://lifelines.readthedocs.io/en/latest/index.html Líneas de vida ¶ lifelines es una biblioteca completa de análisis de superv...

Entradas Populares