• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Ayuda con KMeans

Agat0

De profesión Chapuzas
Registrado
11 Ene 2014
Mensajes
167
Puntos
28
Buenas, estoy bastante atascado , debo utilizar KMeans en un problema supervisado, utilizando este dataset.
La columna de destino es la última que es 'DEATH_EVENT', he separado esta última, para calcular el número de aciertos y errores. El resultado es bastante malo, creo que debería eliminar algunas columnas o crear un bucle que las elimine.
Os pongo el código:
Python:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.cluster import KMeans
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay


X = np.genfromtxt('heart_failure_clinical_records_dataset.csv', delimiter=',')
#Contiene nombre columnas
X = np.delete(X, 0, 0)


train, test = train_test_split(X, test_size=0.33, shuffle=True, random_state=100)

X_train = np.delete(train, -1, axis =1)
y_train = train[:, -1]

X_test = test[:, :-1]
y_test = test[:, -1]






K = 2
kmeans = KMeans(n_clusters=K)
kmeans.fit(X_train)

pred = kmeans.predict(X_test)


n_items = len(pred)
aciertos = 0
for i in range(0, n_items):
    aciertos += 1 if (pred[i] == y_test[i]) else 0

print("Acertado: %6.5f, fallos %6.5f" % (aciertos/n_items, (n_items-aciertos)/n_items))

#matriz de confusion
cm = confusion_matrix(y_test, pred)
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot()
plt.show()

#Salida del resultado
Acertado: 0.59596, fallos: 0.40404
El problema es que no se como realizar un bucle como:
mejor_solucion = 0
mejor_kmeans = 0
si aciertos > mejor_solucion
mejor_kmeans = nuevo_kmeans
Tengo la mitad del problema resuelto pero me pide que pasaría si quito una o varias columnas, por si puedes mejorar los resultados.
 
Última edición:
Arriba