def delete_outliers_ward(prediction, subset): X = subset k = general.numero_clusters(prediction) #se convierte la asignación de clusters a DataFrame clusters = pd.DataFrame(prediction[1], index=X.index, columns=['cluster']) #y se añade como columna a X X_cluster = pd.concat([X, clusters], axis=1) #Filtro quitando los elementos (outliers) que caen en clusters muy pequeños en el jerárquico min_size = 2 X_filtrado = X_cluster[ X_cluster.groupby('cluster').cluster.transform(len) > min_size] k_filtrado = len(set(X_filtrado['cluster'])) #print('''De los {:.0f} clusters hay {:.0f} con más de {:.0f} elementos. #Del total de {:.0f} elementos, se seleccionan {:.0f}'''.format(k,k_filtrado,min_size,len(X),len(X_filtrado))) X_filtrado = X_filtrado.drop('cluster', 1) #X_filtrado_normal = preprocessing.normalize(X_filtrado, norm='l2') return X_filtrado
return clustering_algorithms #Definimos el subset subset1 = define_subset() print("Tamaño del caso de estudio:" + str(len(subset1))) #Definimos los algoritmos que vamos a utilizar algorithms1 = definition_clusters(subset1) predictions1 = general.get_predictions(algorithms1, subset1) #Calculamos medidas de error medidas1 = general.calculoMedidas(subset1, predictions1) #Calculamos numero de clústeres para aquellos métodos a los que no se le especifique n_clusters_meanshift = general.numero_clusters(predictions1[1]) print("El número de clústeres para MeanShift es {:.0f} ".format( n_clusters_meanshift)) ########################## CONFIGURACIÓN DE PARAMETROS ############################## ############ kmeans def configuraciones_kmeans(): #normalized_set = preprocessing.normalize(subset, norm='l2') k_means_10 = cl.KMeans(init='k-means++', n_clusters=10, n_init=100) k_means_20 = cl.KMeans(init='k-means++', n_clusters=20, n_init=100) k_means_30 = cl.KMeans(init='k-means++', n_clusters=30, n_init=100) k_means_40 = cl.KMeans(init='k-means++', n_clusters=40, n_init=100)
return clustering_algorithms #Definimos el subset subset2 = define_subset() print("Tamaño del caso de estudio:" + str(len(subset2))) #Definimos los algoritmos que vamos a utilizar algorithms2 = definition_clusters(subset2) predictions2 = general.get_predictions(algorithms2, subset2) medidas2 = general.calculoMedidas(subset2, predictions2) ### Calculamos numero de clusteres para DBSCAN k_dbscan = general.numero_clusters(predictions2[2]) k_meanshift = general.numero_clusters(predictions2[1]) ############################## CONFIGURACIONES ##### DBSCAN def configuraciones_dbscan(): dbscan_01 = cl.DBSCAN(eps=0.01) dbscan_05 = cl.DBSCAN(eps=0.05) dbscan_1 = cl.DBSCAN(eps=0.1) #Los añadimos a una lista clustering_algorithms = (('DBSCAN eps=0.01', dbscan_01), ('DBSCAN eps=0.05', dbscan_05), ('DBSCAN eps=0.1', dbscan_1))
return clustering_algorithms #Definimos el subset subset3 = define_subset() print("Tamaño del caso de estudio:" + str(len(subset3))) #Definimos los algoritmos que vamos a utilizar algorithms3 = definition_clusters(subset3) predictions3 = general.get_predictions(algorithms3, subset3) #general.scatter_matrix(predictions[2], subset) medidas3 = general.calculoMedidas(subset3, predictions3) k_meanshift = general.numero_clusters(predictions3[2]) ######################### CAMBIO DE PARÁMETROS ##### Birch def configuraciones_birch(): brc_10 = cl.Birch(n_clusters=10, threshold=0.01) brc_20 = cl.Birch(n_clusters=25, threshold=0.01) brc_30 = cl.Birch(n_clusters=30, threshold=0.01) brc_40 = cl.Birch(n_clusters=40, threshold=0.01) brc_50 = cl.Birch(n_clusters=50, threshold=0.01) brc_60 = cl.Birch(n_clusters=60, threshold=0.01) #Los añadimos a una lista clustering_algorithms = (('Birch-10', brc_10), ('Birch-20', brc_20), ('Birch-30', brc_30), ('Birch-40', brc_40),