-
Notifications
You must be signed in to change notification settings - Fork 25
Description
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow import keras
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
1. Carga o Simulación de Datos
Simulación de un dataset de fallos en activos industriales
np.random.seed(42)
num_samples = 1000
data = {
"Vibración": np.random.uniform(0, 1, num_samples),
"Temperatura": np.random.uniform(0, 1, num_samples),
"Presión": np.random.uniform(0, 1, num_samples),
"Corriente": np.random.uniform(0, 1, num_samples),
"Falla": np.random.choice([0, 1], num_samples, p=[0.8, 0.2]) # 0: Sin falla, 1: Con falla
}
df = pd.DataFrame(data)
2. Preprocesamiento de Datos
X = df.drop(columns=["Falla"]) # Variables predictoras
y = df["Falla"] # Variable objetivo
Normalización de datos
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
División en datos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
3. Creación de la Red Neuronal
model = keras.Sequential([
keras.layers.Dense(16, activation='relu', input_shape=(X_train.shape[1],)),
keras.layers.Dense(8, activation='relu'),
keras.layers.Dense(1, activation='sigmoid') # Salida binaria (0 o 1)
])
Compilación del modelo
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
4. Entrenamiento del Modelo
history = model.fit(X_train, y_train, epochs=50, batch_size=16, validation_data=(X_test, y_test))
5. Evaluación del Modelo
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Precisión del modelo: {test_acc:.2f}")
6. Visualización de Resultados
plt.plot(history.history['accuracy'], label='Precisión de entrenamiento')
plt.plot(history.history['val_accuracy'], label='Precisión de validación')
plt.xlabel('Épocas')
plt.ylabel('Precisión')
plt.legend()
plt.show()