por: Dr. Juan I. Barrios Barcelona 2023.
from ctgan import CTGAN
import pandas as pd
from fancyimpute import IterativeImputer
# Cargar el conjunto de datos
data = pd.read_csv('cardiopatia.csv')
# Reemplazar los valores faltantes con el valor más común
data = data.replace(r'\s+', data.mode().iloc[0], regex=True)
# Cambiar los tipos de datos a enteros
data['Sexe'] = data['Sexe'].astype(int)
data['Tabac'] = data['Tabac'].astype(int)
data['HTA'] = data['HTA'].astype(int)
data['Diabetis'] = data['Diabetis'].astype(int)
data['obesitat'] = data['obesitat'].astype(int)
# Especificar el número de filas a generar
num_rows = int(input("Ingrese el número de filas a generar: "))
# Especificar el número de épocas
num_epochs = int(input("Ingrese el número de épocas a utilizar: "))
# Inicializar el modelo CTGAN y ajustarlo a los datos originales
ctgan = CTGAN()
for i in range(num_epochs):
print(f"Epoch {i+1}/{num_epochs}")
ctgan.fit(data)
# Generar datos sintéticos
synthetic_data = ctgan.sample(num_rows)
for column in data.columns:
if data[column].dtype == 'object':
data[column] = pd.to_numeric(data[column], errors='coerce').fillna(0).astype(int)
# Guardar los datos sintéticos en un archivo CSV
synthetic_data.to_csv('synthetic_data.csv', index=False)