CoolFace
Modelpublic

iabd04/Clasificador_Estados_Materia

sourceHugging Facecc-by-nc-4.0updated 1y agoView on Hugging Face
0likes
Model Card

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:

bash
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.
python
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.
python
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:
python
     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.
python
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.
python
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. 1.Instala los requisitos:
bash
pip install requirements.txt
  1. 1.Asegúrate de tener el archivo `crear_entrenar_modelo.py` descargado en tu entorno local:
  • —entrenar_modelo.py
  1. 1.Ejecuta la aplicación:
bash
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.