Clasificación de Medicamentos - Resultados de tu ejecución
59 predicciones correctas de 60 pacientes
Solo 1 error en 60 pacientes
# ============================================
# EJERCICIO 1.1: CLASIFICACIÓN CON ÁRBOL DE DECISIÓN
# RESULTADO: 98.33% Accuracy (59/60 aciertos)
# ============================================
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn import metrics
# Cargar datos
my_data = pd.read_csv("drug200.csv", delimiter=",")
# Crear matriz X (características)
X = my_data[['Age', 'Sex', 'BP', 'Cholesterol', 'Na_to_K']].values
# Codificar variables categóricas
le_sex = preprocessing.LabelEncoder()
le_sex.fit(['F', 'M'])
X[:, 1] = le_sex.transform(X[:, 1])
le_BP = preprocessing.LabelEncoder()
le_BP.fit(['LOW', 'NORMAL', 'HIGH'])
X[:, 2] = le_BP.transform(X[:, 2])
le_Chol = preprocessing.LabelEncoder()
le_Chol.fit(['NORMAL', 'HIGH'])
X[:, 3] = le_Chol.transform(X[:, 3])
# Vector objetivo
y = my_data["Drug"]
# División 70% entrenamiento / 30% prueba
X_trainset, X_testset, y_trainset, y_testset = train_test_split(
X, y, test_size=0.3, random_state=3
)
# Crear y entrenar árbol
drugTree = DecisionTreeClassifier(criterion="entropy", max_depth=4)
drugTree.fit(X_trainset, y_trainset)
# Predicciones
predTree = drugTree.predict(X_testset)
# Resultados
print(f"Predicciones: {predTree[0:5]}")
print(f"Valores reales: {y_testset[0:5].tolist()}")
print(f"Accuracy: {metrics.accuracy_score(y_testset, predTree)*100:.2f}%")
# Output: Accuracy: 98.33%
Mide el desorden en un conjunto. Valor 0 = pureza total.
El árbol elige la pregunta con MAYOR ganancia de información.