Existe algum algoritmo de classificação que atribua um novo vetor de teste ao cluster de pontos cuja distância média é mínima?
Deixe-me escrever melhor: vamos imaginar que temos aglomerados de aponta cada. Para cada cluster k, calculo a média de todas as distâncias entre e , Onde é um ponto no cluster .
O ponto de teste é atribuído ao cluster com o mínimo dessas distâncias.
Você acha que esse é um algoritmo de classificação válido? Em teoria, se o cluster for "bem formado" como você tem após um mapeamento discriminante de pesca linear, poderemos ter uma boa precisão de classificação.
O que você acha desse algo? Eu tentei, mas o resultado é que a classificação é fortemente influenciada pelo cluster com o maior número de elementos.
def classify_avg_y_space(logging, y_train, y_tests, labels_indices):
my_labels=[]
distances=dict()
avg_dist=dict()
for key, value in labels_indices.items():
distances[key] = sk.metrics.pairwise.euclidean_distances(y_tests, y_train[value])
avg_dist[key]=np.average(distances[key], axis=1)
for index, value in enumerate(y_tests):
average_distances_test_cluster = { key : avg_dist[key][index] for key in labels_indices.keys() }
my_labels.append(min(average_distances_test_cluster, key=average_distances_test_cluster.get))
return my_labels