<jupyter_start><jupyter_text>Sistema de importancia Cuando no se tiene la misma cantidad de puntos para cada clase el clasificador pude sesgar el resultado, entonces se debe ajustar para que el sistema cuente con este desequilibrio de clase<jupyter_code>import sys
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from utilities import visualize_classifier
#Cargamos los datos
input_file = 'data_imbalance.txt'
data  = np.loadtxt(input_file, delimiter=',')
X,y = data[:,:-1], data[:, -1]

#separamos las clases
class_0 = np.array(X[y==0])
class_1 = np.array(X[y==1])
#Visualizamos los datos 
plt.figure()
plt.scatter(class_0[:,0], class_0[:,1],s=75, facecolors='black',edgecolors='black',linewidth=1,marker='x')
plt.scatter(class_1[:,0], class_1[:,1],s=75, facecolors='white',edgecolors='black',linewidth=1,marker='o')
plt.title('Datos de entrada')
#Dividimos datos entre entrenamiento y prueba 
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.25,random_state=5)
#Clasificador extremadamente aleatorio 

def forest_classifier(balance=''):
    params={'n_estimators':100, 'max_depth':4,'random_state':0}
    
    if balance=='balance':
        params={'n_estimators':100, 'max_depth':4,'random_state':0, 'class_weight':'balanced'}
    
        
    classifier = ExtraTreesClassifier(**params)
    classifier.fit(X_train, y_train)
    print("\nDatos de entrenamiento clasificados \n")
    visualize_classifier(classifier, X_train, y_train)
    
    
    
    y_test_pred = classifier.predict(X_test)
    print("\nDatos de prueba clasificados \n")
    visualize_classifier(classifier, X_test, y_test)
    
    print("\nDatos X_test y y_test_pred \n")
    visualize_classifier(classifier, X_test, y_test_pred)
    
    # Evaluate classifier performance
    class_names = ['Class-0', 'Class-1']
    print("\n" + "#"*40)
    print("\nClassifier performance on training dataset\n")
    print(classification_report(y_train, classifier.predict(X_train),target_names=class_names))
    print("#"*40 + "\n")
    print("#"*40)
    print("\nClassifier performance on test dataset\n")
    print(classification_report(y_test, y_test_pred, target_names=class_names))
    print("#"*40 + "\n")
    
forest_classifier()<jupyter_output>Datos de entrenamiento clasificados<jupyter_text>La alerta anterior se debe a que en la calificación de la clase_0 hay una división por cero, esto se debe al desvalance en las clases<jupyter_code>forest_classifier('balance')<jupyter_output>Datos de entrenamiento clasificados
{'fraction_non_alphanumeric': 0.11782363977485928, 'fraction_numerical': 0.016885553470919325, 'mean_word_length': 5.698492462311558, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '498828', 'license': 'MIT', 'n_tokens_mistral': 939, 'n_tokens_neox': 923, 'n_words': 205, 'path': 'supervised/class_imbalance.ipynb', 'repo_name': 'andres-mestra/AI_learning', 'size': '2665'}