File size: 1,462 Bytes
0a9d067
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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)