|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object edu.uci.ics.jung.algorithms.cluster.VoltageClusterer<V,E>
public class VoltageClusterer<V,E>
Clusters vertices of a Graph
based on their ranks as
calculated by VoltageScorer
. This algorithm is based on,
but not identical with, the method described in the paper below.
The primary difference is that Wu and Huberman assume a priori that the clusters
are of approximately the same size, and therefore use a more complex
method than k-means (which is used here) for determining cluster
membership based on co-occurrence data.
The algorithm proceeds as follows:
NOTE: Depending on how the co-occurrence data splits the data into clusters, the number of clusters returned by this algorithm may be less than the number of clusters requested. The number of clusters will never be more than the number requested, however.
VoltageScorer
,
KMeansClusterer
Nested Class Summary | |
---|---|
protected class |
VoltageClusterer.MapValueArrayComparator
|
Field Summary | |
---|---|
protected Graph<V,E> |
g
|
protected KMeansClusterer<V> |
kmc
|
protected int |
num_candidates
|
protected Random |
rand
|
Constructor Summary | |
---|---|
VoltageClusterer(Graph<V,E> g,
int num_candidates)
Creates an instance of a VoltageCluster with the specified parameters. |
Method Summary | |
---|---|
protected void |
addOneCandidateCluster(LinkedList<Set<V>> candidates,
Map<V,double[]> voltage_ranks)
alternative to addTwoCandidateClusters(): cluster vertices by voltages into 2 clusters. |
protected void |
addTwoCandidateClusters(LinkedList<Set<V>> candidates,
Map<V,double[]> voltage_ranks)
Do k-means with three intervals and pick the smaller two clusters (presumed to be on the ends); this is closer to the Wu-Huberman method. |
protected Collection<Set<V>> |
cluster_internal(V origin,
int num_clusters)
Does the work of getCommunity and cluster . |
Collection<Set<V>> |
cluster(int num_clusters)
Clusters the vertices of g into
num_clusters clusters, based on their connectivity. |
Collection<Set<V>> |
getCommunity(V v)
Returns a community (cluster) centered around v . |
protected Map<V,double[]> |
getObjectCounts(Collection<Set<V>> candidates,
V seed)
|
protected List<V> |
getSeedCandidates(Collection<Set<V>> candidates)
Returns an array of cluster seeds, ranked in decreasing order of number of appearances in the specified collection of candidate clusters. |
protected void |
setRandomSeed(int random_seed)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected int num_candidates
protected KMeansClusterer<V> kmc
protected Random rand
protected Graph<V,E> g
Constructor Detail |
---|
public VoltageClusterer(Graph<V,E> g, int num_candidates)
num_candidates
- the number of candidate clusters to createMethod Detail |
---|
protected void setRandomSeed(int random_seed)
public Collection<Set<V>> getCommunity(V v)
v
.
v
- the vertex whose community we wish to discoverpublic Collection<Set<V>> cluster(int num_clusters)
g
into
num_clusters
clusters, based on their connectivity.
num_clusters
- the number of clusters to identifyprotected Collection<Set<V>> cluster_internal(V origin, int num_clusters)
getCommunity
and cluster
.
origin
- the vertex around which clustering is to be donenum_clusters
- the (maximum) number of clusters to findprotected void addTwoCandidateClusters(LinkedList<Set<V>> candidates, Map<V,double[]> voltage_ranks)
candidates
- voltage_ranks
- protected void addOneCandidateCluster(LinkedList<Set<V>> candidates, Map<V,double[]> voltage_ranks)
candidates
- voltage_ranks
- protected List<V> getSeedCandidates(Collection<Set<V>> candidates)
candidates
- protected Map<V,double[]> getObjectCounts(Collection<Set<V>> candidates, V seed)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |