[Top][All Lists]
[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