Clasificador de Estados de la Materia

Este modelo de clasificación ha sido entrenado desde cero para predecir el estado físico de la materia (Sólido, Líquido, Gas, Plasma) en función de variables físico-químicas simuladas.

Objetivo del modelo

Predecir el estado físico de la materia con especial interés en detectar correctamente el estado basándose en el f1_score.

Características del modelo

  • Tipo: Clasificación
  • Algoritmo: SVM (Support Vector Machine) con kernel lineal
  • Hiperparámetros:
    • C = 200
    • kernel = linear
  • Normalización previa: MinMaxScaler()
  • Entrenado con datos sintéticos simulados

El modelo fue entrenado utilizando un dataset que se encuentra en Hugging Face: iabd04/estados_materia_dataset.

Variables de entrada

  • Temperatura
  • Presión
  • Densidad
  • Nivel_Energía

Todas las variables fueron normalizadas antes del entrenamiento.

Evaluación del modelo

  • Métrica prioritaria: F1_Score
  • Rendimiento superior con SVM Lineal frente a otros modelos (Logistic Regression, Árboles, kNN)

Requisitos

Para ejecutar este modelo, asegúrate de tener instaladas las siguientes librerías de Python:

scikit-learn
pandas
joblib
datasets(opcional para importar datasets desde Hugging Face)

O implementa/descarga el archivo requirements.txt.

¿Cómo ha sido creado y entrenado este modelo?

El modelo fue desarrollado y entrenado en un entorno de Google Colab utilizando datos sintéticos del dataset iabd04/estados_materia_dataset. El flujo de trabajo incluyó los siguientes pasos:

1. Carga y preprocesamiento de datos

  • Importación del dataset desde Hugging Face.
  • Selección de las variables de entrada (Temperatura, Presión, Densidad, Nivel_Energía) y la variable objetivo (Estado).
  • Aplicación de una normalización con MinMaxScaler() para escalar todas las variables entre 0 y 1.
from datasets import load_dataset
import pandas as pd

dataset = load_dataset("iabd04/estados_materia_dataset")
df = pd.DataFrame(dataset["train"])
X = df.drop(columns=["Estado"])
y = df["Estado"]

2. División del conjunto de datos

  • Separación en subconjuntos de entrenamiento y prueba utilizando una proporción 80/20 mediante train_test_split.
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)

3. Entrenamiento del modelo

  • Entrenamiento de un clasificador SVM con kernel lineal:
    from sklearn.svm import SVC
    from sklearn.svm import SVC
    
     clf = SVC(kernel="linear", C=200)
     clf.fit(X_train, y_train)
    
  • El modelo se entrenó sobre los datos normalizados para maximizar su capacidad de generalización.

4. Evaluación del rendimiento

  • Se utilizó la métrica F1-Score para evaluar el rendimiento en el conjunto de prueba.
  • El modelo mostró un rendimiento superior frente a otros enfoques como regresión logística, árboles de decisión y k-vecinos más cercanos.
from sklearn.metrics import f1_score

y_pred = clf.predict(X_test)
score = f1_score(y_test, y_pred, average="weighted")
print("F1 Score:", score)

5. Exportación del modelo y del scaler

  • El modelo final se guardó en un archivo .joblib para su uso posterior sin necesidad de reentrenar.
import joblib

joblib.dump(clf, "modelo_svm_estados_materia.joblib")
joblib.dump(scaler, "scaler.joblib")

Este pipeline permite reproducir fácilmente los resultados y adaptar el modelo a nuevos conjuntos de datos o condiciones experimentales.

Cómo entrenar el modelo en un entorno local

  1. Instala los requisitos:
pip install requirements.txt
  1. Asegúrate de tener el archivo crear_entrenar_modelo.py descargado en tu entorno local:
  • entrenar_modelo.py
  1. Ejecuta la aplicación:
python crear_entrenar_modelo.py

Licencia

Este modelo se distribuye bajo la licencia Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0). Puedes usarlo libremente para fines académicos y no comerciales.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train iabd04/Clasificador_Estados_Materia

Space using iabd04/Clasificador_Estados_Materia 1