Pingul's picture
Upload 14 files
0a9d067 verified
from sklearn.utils import resample
import pandas as pd
import re
import os
file_path=os.path.join(os.path.dirname(__file__),'emotions.csv')
data=pd.read_csv(file_path)
# Ver distribución de clases después de la concatenación
class_counts = data["label"].value_counts()
print("Distribución después de la concatenación:")
print(class_counts)
min_class_count = class_counts.min()
# Balancear el dataset
balanced_data = pd.concat([
resample(data[data["label"] == label],
replace=False, # No hacer duplicados
n_samples=min_class_count, # Igualar al tamaño de la clase minoritaria
random_state=42)
for label in class_counts.index
])
balanced_data = balanced_data.sample(frac=1, random_state=42)
def clean_text(text):
# Paso 1: Remover links completos que contengan http, https, o www
text = re.sub(r"(http[s]?://[^\s]+|www\.[^\s]+)", "", text)
# Paso 2: Remover caracteres especiales y dejar solo letras, números y espacios
text = re.sub(r"[^A-Za-z0-9\s]", "", text)
# Paso 3: Eliminar espacios extra
text = re.sub(r"\s+", " ", text).strip()
return text
balanced_data["text"] = balanced_data["text"].apply(clean_text)
# Mostrar resultados finales
print("\nDistribución balanceada de clases:")
print(balanced_data["label"].value_counts())
# Guardar el dataset balanceado
balanced_data.to_csv("balanced_dataset.csv", index=False)