from sklearn.datasets import load_iris
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
from sklearn.cluster import KMeans
dataset = load_iris()
X = dataset.data
y = dataset.target
from sklearn.metrics.pairwise import euclidean_distances
lista = X.copy()
distancias = []
actual = lista[0]
index = 0
while len(lista) > 1:
lista = np.delete(lista, index, axis=0)
index = 0
primero = True
for comparar in lista :
distancia = np.sqrt(np.sum(np.power(actual - comparar,2)))
if(primero == True):
primero = False
minDist = distancia
actualAux = comparar
auxIndex = index
if(distancia<minDist):
minDist = distancia
actualAux = comparar
auxIndex = index
index = index + 1
index = auxIndex
actual = actualAux
distancias.append(minDist)
minDist=0
plt.plot(distancias)
plt.show()
kmeans = KMeans(n_clusters=3, random_state=0).fit(X,y)
labels=kmeans.labels_
y2 = y.copy()
i = 0
while i < len(y2):
if(i <50 and y2[i] == 0):
y2[i]= 1
if(i >= 50 and y2[i] == 1):
y2[i]= 0
i = i+1
i = 0
aciertos=0
aciertos_0 = 0
aciertos_1 = 0
aciertos_2= 0
while i < len (y2):
if (labels[i]==y2[i]):
aciertos = aciertos +1
if (y2[i]==0 and labels[i]==y2[i]):
aciertos_0 = aciertos_0 +1
if (y2[i]==1 and labels[i]==y2[i]):
aciertos_1 = aciertos_1 +1
if (y2[i]==2 and labels[i]==y2[i]):
aciertos_2 = aciertos_2 +1
i = i+1
compactacion = (aciertos/len(y))*100
print("El numero total de aciertos obtenidos por parte del clasificador es de ", aciertos)
print("")
print("De la clase 0 obtenemos un total de ",aciertos_0," aciertos de 50 que tiene etiquetados en el dataset , dando por lo tanto un ", (aciertos_0/50)*100 , "% de acierto")
print("")
print("De la clase 1 obtenemos un total de ",aciertos_1," aciertos de 50 que tiene etiquetados en el dataset , dando por lo tanto un ", (aciertos_1/50)*100 , "% de acierto")
print("")
print("De la clase 2 obtenemos un total de ",aciertos_2," aciertos de 50 que tiene etiquetados en el dataset , dando por lo tanto un ", (aciertos_2/50)*100 , "% de acierto")
print("")
print("El resultaod obtenido de compactación entre el numero de aciertos y la longitud de la clase es de un",compactacion,"%")