Técnicas de Sobremuestreo
Desliza para mostrar el menú
La sobremuestreo es una técnica utilizada para abordar el problema de los conjuntos de datos desbalanceados, especialmente cuando una clase (la clase minoritaria) tiene significativamente menos muestras que las demás. Al aumentar la representación de la clase minoritaria, se facilita que los modelos de aprendizaje automático aprendan de todas las clases de manera más efectiva, lo que a menudo resulta en un mejor rendimiento predictivo y resultados más justos. El beneficio más común del sobremuestreo es que equilibra la distribución de las clases, permitiendo que los algoritmos eviten el sesgo hacia la clase mayoritaria. Sin embargo, el sobremuestreo también puede introducir algunos inconvenientes. Si simplemente se duplican muestras existentes, el modelo puede sobreajustarse, aprendiendo patrones demasiado específicos de los datos duplicados y fallando en generalizar a nuevos datos. Además, el sobremuestreo puede aumentar el tamaño del conjunto de datos, lo que puede llevar a tiempos de entrenamiento más largos y mayores demandas computacionales.
1234567891011121314151617181920212223242526272829303132import pandas as pd # Create a sample DataFrame with an imbalanced target data = { "feature1": [1, 2, 3, 4, 5, 6, 7], "target": ["A", "A", "A", "A", "B", "B", "B"] } df = pd.DataFrame(data) # Count original class distribution print("Original class distribution:") print(df["target"].value_counts()) # Oversample minority class "B" to match majority class "A" majority_count = df["target"].value_counts().max() minority_class = df["target"].value_counts().idxmin() # Get all minority class rows minority_rows = df[df["target"] == minority_class] # Calculate how many samples to add samples_to_add = majority_count - len(minority_rows) # Sample with replacement from minority class oversampled_minority = minority_rows.sample(n=samples_to_add, replace=True, random_state=42) # Concatenate original data with new samples df_oversampled = pd.concat([df, oversampled_minority], ignore_index=True) # Show new class distribution print("\nClass distribution after oversampling:") print(df_oversampled["target"].value_counts())
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla