سلام . وقتتون بخیر.ببخشید دارم سوال در مورد پایتون می پرسم. من تازه کارم و چون چیزی در مورد پایتون و البته فروم شما نمی دونم، عذرخواهی منو بپذیرید و اگه میشه کمکم کنید.
من یه کد دارم که جامعه ای رو تشخیص میده. برای تشخیص از الگوریتم توزیع برچسب استفاده می کنه.
LPA: Label propagation algorithm
یعنی لیبل می گیره و بعدش توزیع می کنه و بقیه کار تشخیص جوامع رو انجام میده. حالا مشکل من اینکه که این کد با دیتاست با 417 نود، هیچ مشکلی نداره ولی وقتی دیتاست اصلی خودمو میزنم که تعداش 188هزار تا نوده، خطا می ده.
میشه بررسی کنید و متوجه دلیل خطاش بشید؟>
خطاشم توی این قسمته:
if(n[left][pre][right][left]ot dict.has_key(label)):
newLabel = dict.keys()[random.randrange(len(dict.keys()))]
node["label"][/left][/right][/pre][/left] = newLabel
دوستان گفتن به خاطر اینه که dict.keys صفر میده
درنتیجه خطا می ده کد رو کمی تغییر دادن و این شکلی کردن:
def propagateLabel(G):
#random visit
'''dalile inke har dafe ye adad dar miare ine ke be soorate random label hasho
propagete mikone'''
visitSequence = random.sample(G.nodes(),len(G.nodes()))
for i in visitSequence:
node = G.node[i]
label = node["label"]
dict = getMaxNeighborLabel(G, i)
if(not dict.has_key(label)):
try:
newLabel = dict.keys()[random.randrange(len(dict.keys()))]
node["label"] = newLabel
except ValueError:
print "1"
pass
# dict.keys() -> list of dict's keys
فایل کد رو به این ادرس آپلود کردم:
http://s3.picofile.com/file/8282245642/CommunityDetection_master.zip.htmlدیتاست کوچیکه رو در این ادرس آپلود کردم:
http://s6.picofile.com/file/8282246100/test2.gml.htmlدیتاست بزرگتره در این ادرس اپلود کردم:
http://s5.picofile.com/file/8282246118/test.gml.htmlاگه بشه کمکم کنید واقعا ازتون ممنون میشم