Mi piacerebbe raggruppare i punti dati a una distanza personalizzata e stranamente, sembra che né i metodi di clustering scipy né sklearn consentono la specifica di una funzione di distanza.Come specificare una funzione di distanza per il clustering?
Ad esempio, in sklearn.cluster.AgglomerativeClustering
, l'unica cosa che posso fare è inserire una matrice di affinità (che sarà molto ricca di memoria). Per costruire questa stessa matrice, si consiglia di utilizzare sklearn.neighbors.kneighbors_graph
, ma non capisco come sia possibile specificare una funzione di distanza tra due punti. Qualcuno potrebbe illuminarmi?
Grazie per il suggerimento. Ho provato fclusterdata ma non è riuscito poiché inizia convertendo l'array di input in doubles mentre il mio array è strutturato (contiene stringhe). Come potrei affrontarlo? –
Potresti pubblicare alcuni dati di esempio? –
Certo: [(b'FOO ', b'67482', 13167), ..., (b'BAR ', b'32798', 1369)]. Ma stavo pensando, un modo per aggirare il problema sarebbe quello di eseguire il metodo di clustering sugli indici (vale a dire 1, ..., n) e utilizzare questi indici all'interno della funzione distance per recuperare i dati corretti nell'array iniziale. A proposito, non ho bisogno che il clustering sia gerarchico, quindi potrei usare un metodo k-means invece di fclusterdata. –