igraph-help
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [igraph] Re: graph.knn in python


From: Simone Gabbriellini
Subject: Re: [igraph] Re: graph.knn in python
Date: Tue, 8 Feb 2011 10:29:48 +0100

thanks very much Tamas!

simo

Il giorno 07/feb/2011, alle ore 23.14, Tamás Nepusz ha scritto:

> Hi Simone,
> 
>> can this be considered a valid substitute of the knn function?
>> 
>> vs = g.vs()
>> vcount = g.vcount()
>> neisets = [set(g.neighbors(i)) for i in xrange(vcount)]
>> deg = [g.degree(i) for i in xrange(vcount)]
>> for u in vs:
>>      neiavedeg = []
>>      for v in neisets[u.index]:
>>              neiavedeg.append(deg[v])    
>>      u["neideg"] = (sum(neiavedeg) / float(len(neiavedeg)) if len(neiavedeg) 
>> > 0 else 0)
> I've simplified your code a bit:
> 
> deg = g.degree()
> for u in g.vs:
>   neiavedeg = [deg[v] for v in g.neighbors(u)]
>   u["neideg"] = (sum(neiavedeg) / float(len(neiavedeg))) if neiavedeg else 0
> 
> Things to note here:
> 
> 1. Edge weights are not handled; things can become more complicated if the 
> edges have weights.
> 2. You can simply use g.degree() to query the degrees of all the vertices, so 
> you don't have to built the deg vector item by item.
> 3. g.neighbors() accepts a Vertex object as well as a vertex index, so no 
> need to use u.index there.
> 4. Since you query the neighbors of each vertex only once, there is no 
> performance gain when you store the neighbor sets in advance (unless you want 
> to use them again).
> 
> -- 
> Tamas
> 
> 
> _______________________________________________
> igraph-help mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/igraph-help




reply via email to

[Prev in Thread] Current Thread [Next in Thread]