انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: مشکل کد و randrange  (دفعات بازدید: 1213 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین pakseresht

  • Newbie
  • *
  • ارسال: 4
  • جنسیت : دختر
مشکل کد و randrange
« : 24 دی 1395، 11:53 ق‌ظ »
سلام . وقتتون بخیر.ببخشید دارم سوال در مورد پایتون می پرسم. من تازه کارم و چون چیزی در مورد پایتون و البته فروم شما نمی دونم، عذرخواهی منو بپذیرید و اگه میشه کمکم کنید.
من یه کد دارم که جامعه ای رو تشخیص میده. برای تشخیص از الگوریتم توزیع برچسب استفاده می کنه.
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

اگه بشه کمکم کنید واقعا ازتون ممنون میشم
« آخرین ویرایش: 25 دی 1395، 10:30 ق‌ظ توسط دانیال بهزادی »

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19724
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : مشکل کد و randrange
« پاسخ #1 : 25 دی 1395، 11:12 ق‌ظ »
برای lpa می‌تونی از این کد استفاده کنی: https://github.com/anatman-xx/lpa/blob/master/lpa.py
« آخرین ویرایش: 28 دی 1395، 10:12 ق‌ظ توسط دانیال بهزادی »
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین m2khosravizadeh

  • Newbie
  • *
  • ارسال: 1
  • جنسیت : پسر
پاسخ : مشکل کد و randrange
« پاسخ #2 : 25 دی 1395، 11:49 ق‌ظ »
اگه عدد تصادفی که ایجاد می کنید تکراری باشه چی؟


آفلاین pakseresht

  • Newbie
  • *
  • ارسال: 4
  • جنسیت : دختر
پاسخ : مشکل کد و randrange
« پاسخ #3 : 28 دی 1395، 05:38 ق‌ظ »
اگه عدد تصادفی که ایجاد می کنید تکراری باشه چی؟

چند بار ممکنه این اعداد تصادفی تکرار بشه؟ بعد اینکه برای ما فرقی نمی کنه چون لیبل رو می ده . اگه یکسان باشه توی یک جامعه قرارشون می ده
حقیقت اینکه که اصن این مشکل در تشخیص جوامع از طریق توزیع لیبل پیش میاد . در پایان نامه من از ck-lpa استفاده کردم که تشخیص جامعه از طریق community kernel جلوی این کار رو می گیره. ولی کد مربوطه اش رو پیدا نکردم. با نویسندگان مقاله اش هم چندین بار مکاتبه داشتم ولی جواب منو ندادن. درنتیجه خودم باید یه الگوریتم دیگه پیدا می کردم. توی جامعه سایز کوچیک، جوامع بزرگ یا به اصطلاح monster community پیدا نکرده.
ممنونم ازتون