اذهب إلى المحتوى

Kais Hasan

الأعضاء
  • المساهمات

    2589
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    26

كل منشورات العضو Kais Hasan

  1. و عليكم السلام، يمكنك استعمال ما تشاء من قيم الخرج، لا وجود لحد نظري يخبرك أنه لا يمكن استعمال أكثر من خرج. أي أن هناك الكثير من الشبكات تقوم بتوقع العديد من الأمور في نفس الوقت، مثلًا ال YOLO تقوم بتوقع موقع الغرض (عن طريق صندوق يحيط به)، الصنف الذي يتبع له هذا الغرض، و مقدار الثقة في التوقع. لذلك عندما تريد توقع أكثر من قيمة ببساطة يجب أن يكون هناك أكثر من label، بحيث تقارن توقع النموذج به. بالطبع قد تحتاج إلى بعض التغييرات في هيكلية الشبكة، حيث يتم قسمها إلى قسم مختص باستخراج الميزات، و عدد من الرؤوس كل منها مبني على قسم الاستخراج و يقوم بتوقع قيمة ما. هذه صورة توضح أحد الأمثلة على استعمال رأسين للشبكة: تحياتي.
  2. لقد حللت مشكلتك. كان هناك مشكلة في ترك فراغ حتى يمكن رسم ال legends فيه باستعمال الطريقة السابقة. لكن إبقاء المخططين بجانب بعضهما سيجعل المخططات متداخلة، لذلك قمت ببعض التنسيق بحيث تظهر المخططات بشكل أفضل: import matplotlib.pyplot as plt import seaborn as sns import pandas as pd from matplotlib.patches import Patch data_train = pd.read_csv('train.csv') # Create figure with 2 vertical subplots (2 rows, 1 column) fig, axes = plt.subplots(2, 1, figsize=(12, 14)) # Increased height for vertical spacing # ----------------------------------------------------------------- # Plot 1: Top plot (age_at_hct vs gvhd_proph) # ----------------------------------------------------------------- hue_categories_1 = data_train['gvhd_proph'].unique() palette_1 = sns.color_palette("Blues", n_colors=len(hue_categories_1)) sns.histplot( data=data_train, x='age_at_hct', hue='gvhd_proph', multiple='stack', palette=palette_1, ax=axes[0], legend=False ) axes[0].set_title("Stacked Histogram of Age at HCT and GVHD Prophylaxis", pad=20) axes[0].set_xlabel("Age at HCT") axes[0].set_ylabel("Count") # Legend for top plot (right side) legend_patches_1 = [Patch(color=color, label=label) for color, label in zip(palette_1, hue_categories_1)] axes[0].legend( handles=legend_patches_1, bbox_to_anchor=(1.05, 1), # Right side loc='upper left', title='GVHD Prophylaxis' ) # ----------------------------------------------------------------- # Plot 2: Bottom plot (age_at_hct vs tbi_status) # ----------------------------------------------------------------- hue_categories_2 = data_train['tbi_status'].unique() palette_2 = sns.color_palette("Blues", n_colors=len(hue_categories_2)) sns.histplot( data=data_train, x='age_at_hct', hue='tbi_status', multiple='stack', palette=palette_2, ax=axes[1], legend=False ) axes[1].set_title("Stacked Histogram of Age at HCT and Tbi-Status", pad=20) axes[1].set_xlabel("Age at HCT") axes[1].set_ylabel("Count") # Legend for bottom plot (right side) legend_patches_2 = [Patch(color=color, label=label) for color, label in zip(palette_2, hue_categories_2)] axes[1].legend( handles=legend_patches_2, bbox_to_anchor=(1.05, 1), # Right side loc='upper left', title='TBI Status' ) # ----------------------------------------------------------------- # Final layout adjustments # ----------------------------------------------------------------- plt.tight_layout() plt.subplots_adjust( hspace=0.3, # Space between subplots right=0.85 # Make space for legends on the right ) plt.show() تحياتي.
  3. بشكل عام تكون مفيدة في حال كان هناك ترتيب للبيانات، مثلًا لنفترض أنه لديك بيانات توضح درجات الحرارة من تاريخ محدد لتاريخ محدد. في حال كان هناك أحد التواريخ فيه خطأ و لم يتم تسجيل درجة الحرارة فيه، يمكنك استعمال هذه التقنية فبشكل عام أنت تريد أن تعطي وزن أكبر للأيام القريبة، فدرجات الحرارة نادرًا ما تتغير بشكل كبير بين يوم و آخر، و لكن بنفس الوقت تريد إبقاء تأثير الأيام البعيدة و لكن بدرجة أخف (لإلغاء تأثير تقلب حدث بشكل استثنائي في درجات الحرارة). تحياتي.
  4. مرحبًا، يجب أن يكون استعمال bbox_to_anchor مناسب لحل مشكلتك، يمكننا وضعه في أول الرسم البياني بحيث يكون فوق الرسم. جرب استعمال الكود التالي و أخبرني بالنتيجة: import matplotlib.pyplot as plt import seaborn as sns # Assuming 'data_train' is your DataFrame # Set the overall figure size plt.figure(figsize=(12, 11)) # Plot 1: age_at_hct vs gvhd_proph plt.subplot(2, 2, 1) sns.histplot(data=data_train, x='age_at_hct', hue='gvhd_proph', multiple='stack', palette='Blues') plt.title("Stacked Histogram of Age at HCT and GVHD Prophylaxis") plt.xlabel("Age at HCT") plt.ylabel("Count") plt.legend(bbox_to_anchor=(1, 1), loc='upper left') # Move legend outside # Plot 1: age_at_hct vs tbi_status plt.subplot(2, 2, 2) sns.histplot(data=data_train, x='age_at_hct', hue='tbi_status', multiple='stack', palette='Blues') plt.title("Stacked Histogram of Age at HCT and Tbi-Status") plt.xlabel("Age at HCT") plt.ylabel("Count") plt.legend(bbox_to_anchor=(1, 1), loc='upper left') # Move legend outside plt.tight_layout() plt.show() تحياتي.
  5. يبدو أن هذا السؤال متعلق بوظيفة. في أكاديمية حسوب لا نقوم بحل الوظائف، فهذا لا يعود عليك بأي فائدة. من الافضل أن تحاول حل الوظيفة لوحدك و يمكننا مساعدتك في حال كان لديك سؤال محدد عن آلية عمل تابع معين أو عن خطأ لم تستطع معرفة سببه. تحياتي.
  6. مرحبًا، أعتقد أن ما تقصده هو تقسيم البيانات إلى 3 أقسام هي train, dev, test. الهدف من هذا التقسيم هو عدم الوقوع في مشكلة overfitting على ال test. أي عندما تقوم بالتدريب و تعديل النموذج بناء على نتائج الاختبار على ال test فأنت فعليًا ستقع في مشكلة حيث أن نموذج تم تدريبه بحيث يعطي أفضل نتيجة على ال test و بالتالي قد يكون هناك overfitting. تظهر هذه المشكلة عندما تريد المقارنة بين النماذج، فالمقارنة العادلة يجب أن تختبر كيف تقوم النماذج بتعميم بيانات التدريب على بيانات الاختبار و لهذا السبب يجب ألا يتم اختيار بارامترات النماذج بحيث تعطي أفضل نتائج، و إلا يكون الاختبار بلا فائدة. في نفس الوقت يجب أن تختبر النموذج خلال التدريب حتى تختار قيم بارامترات جيدة تعطي نتائج لا بأس بها على بيانات لم تراها. لحل هذا التعارض تم إنشاء التقسيم الثالث و هو ال dev حتى تقوم باستعمالها كبيانات اختبار خلال عملية تطوير النموذج، و تكون ال test فقط لاختبار النموذج مرة واحدة بعد الانتهاء من تطويره و مقارنته بنماذج أخرى قد تكون طورتها لمعرفة أيها أفضل. تحياتي.
  7. مهمتها هي إضافة إزاحة لأول سطر في محتوى نصي، أي في حال كان لديك فقرات نصية ضمن الموقع الخاص بك، فإن أحد طرق التنسيق هي أن تقوم بإزاحة أول سطر من الفقرة قليلًا. هذا الأسلوب متبع بكثرة في الكتب مثلًا و يمكن أن تجده في بعض المواقع. هذه هي النتيجة عند تطبيقها، لاحظ كيف تمت إزاحة أول سطر: تحياتي.
  8. مرحبًا شريف، في حالتك هذه ينصح باستعمال الخدمات السحابية بدلًا من بناء الأمر بنفسك، فهي تقدم لك حلًا لمشاكل انقطاع الكهرباء و إمكانية إنشاء نسخ احتياطية، كما تعالج مشاكل الأمان لوحدها. يمكنك الإطلاع على الخدمات التي تقدمها شركات مثل Amazon و Google و غيرها. تحياتي.
  9. و عليكم السلام علي، يبدو أن بعض الأعمدة تحمل قيم نصية، يبدو أن هذه نفس البيانات التي قمت بسؤالنا عنها منذ فترة، مثلًا العمود cyto_score يحمل قيمة نصية و ليس عددية، و لا يمكنك تطبيق عملية المتوسط الحسابي عليه. تحياتي.
  10. مرحبًا علي، بعد الإطلاع على المسابقة يبدو أن هذا ما يظهر لك فقط، أي تم إظهار أول 3 أسطر حتى تعرف ما هو شكل بيانات الاختبار و لكن البيانات مخفية. عادة ما يتم القيام بذلك لضمان أنك لم ترى بيانات الاختبار بنفسك و لم تصمم النموذج بحيث يتوافق معها. لقد تم ذكر هذا الأمر هنا: https://www.kaggle.com/competitions/equity-post-HCT-survival-predictions/discussion/549958#3079219 تحياتي.
  11. من الصعب الإجابة بدون معرفة عن أي بيانات تتحدث. فقد يكون هناك سبب منطقي. أو قد تكون البيانات غير جيدة. فليس كل شيء على كاغل ذو جودة عالية. حيث أنه يمكن لأي شخص رفع بيانات. تحياتي.
  12. و عليكم السلام، في المشاريع الحقيقية يفضل استعمال الأدوات الجاهزة، فهي توفر الوقت و قد تم اختبارها بشكل كبير لذلك يمكن الوثوق بها. أما في حال كتابة الكود من الصفر فقد يأخذ ذلك وقت طويل و قد يكون هناك أخطاء كثيرة من الصعب إيجادها. في حال كنت تعمل في قسم البحث العلمي الخاص بالشركة فقد تحتاج حينها إلى كتابة بعض الأمور غير المدعومة من قبل اللغات بعد، و عندها ستقوم بكتابة الكود بالاعتماد على نفسك. و لكن هذا لا يعني من الصفر تمامًا حيث ستعتمد على أدوات من المكاتب و لكن هيكلية الشبكة و تفاصيلها قد تكتبها بنفسك. أو كيفية عمل بعض المكونات فيها. أي في النهاية الأمر يعتمد على العمل الذي تقوم به، طالما يمكنك استعمال أدوات جاهزة قم بذلك. تحياتي.
  13. كما سبق و أخبرتك، هناك طرق يمكنك استعمالها في حال كان العمود مهمًا في نظرك و ليس من المفيد حذفه. في النهاية هنا تأتي مهمتك في أن تجد أهم الأعمدة، فعملية معالجة البيانات مهمة جدًا مثل عملية تطوير النموذج.
  14. مرحبًا علي، بالطبع يجب مسحه، عدم مسحه يفترض أن يعطيك خطأ. فمثلًا لو أنك قمت بتدريب النموذج على 10 أعمدة فهذا يعني أنه لديك أوزان مخصصة لهذه الأعمدة فقط، و في حال حاولت اختبار النموذج على 11 عمود يفترض أن يعطيك خطأ. من الطبيعي مسح الأعمدة، فهي جزء من عملية اختيار الميزات المهمة و حذف غير المهمة، و وجود بيانات ناقصة بشكل كبير في عمود قد يدل أن العمود غير مهم. في حال كان العمود رقمي، يمكنك تعويض مسح العمود بتعويض البيانات الناقصة ب 0 .. في تلك الحالة لن تؤثر على الوزن الخاص بذلك العمود، أي أن النموذج سيتعامل و كأن هذه العينة لا تحوي على هذه الميزة. تحياتي,
  15. مرحبًا علي، الكود ليس مهمًا فما يهم هو جودة النموذج الذي قمت بتطويره. قد يتم التحقق من الكود لضمان عدم وجود غش فقط و لكن عدا ذلك هو ليس معيار. أيضا الكود الخاص بك سيصبح مرئي للآخرين في حال الفوز و جودة الكود قد تكون في صالحك من ناحية أن من سيرى الكود سيعرف أنك منظم و تجيد كتابة كود جيد. تحياتي.
  16. و عليكم السلام، من الجيد أنه لديك معرفة مسبقة بال html, css. و لكن دورة تطوير واجهات المستخدم ليست فقط عنهما، فهما يمثلان المقدمة فقط و هذا ما ستتعلمه في تلك الدورة: مفهوم الواجهة الأماميّة للموقع front-end وكيفية عملها. أساسيات لغات تطوير واجهات المستخدم: HTML, CSS, JavaScript. استخدام أحدث أدوات التطوير: Bootstrap, jQuery, Sass, Gulp. التعامل مع خدمة استضافة المشاريع GitHub. إعداد هيكل الموقع ووضع خطة العمل. تطوير واجهة استخدام حقيقة لمتجر الكتروني كامل من الصفر. تطوير موقع لشركة مع مدونة خاصة خطوة بخطوة. بناء 5 صفحات هبوط مختلفة بناء واجهة لموقع يشبه YouTube بناء لوحة تحكم لتطبيق ويب في حال كنت تميل إلى تطوير واجهات المستخدم فهذا أفضل كورس. في حال كنت تريد تعلم كيفية بناء ال backend و كيفية بناء تطبيقات موبايل فالأفضل هو دورة تطوير التطبيقات باستعمال javascript. تحياتي.
  17. حاليًا لا يوجد مسابقات في الأكاديمية. يمكنك تجربة الدخول في مسابقات برمجية على مواقع مثل Codeforces و Atcoder و غيره، فهي توفر مجموعة كبيرة من المسائل للتدريب بالإضافة إلى مسابقات تنافسية جدًا بشكل دوري. تحياتي.
  18. المنحني يوضح احتمالية النجاة، بالتالي كلما كان المنحني أقل انحدارًا كلما كان احتمال النجاة أعلى. لاحظ أن ذلك طبعًا متعلق بالزمن أيضًا ففي الزمن 10 (الشهر العاشر) تقريبًا المنحنيين متقاربين، بينما لاحقًا يظهر الفرق الكبير. تحياتي.
  19. مرحبًا حسن، يبدو أن سؤالك متعلق بأحد دروس الدورات، من فضلك قم بإضافة سؤالك في قسم التعليقات أسفل الدرس. تحياتي.
  20. أعتقد أنا ما تقصده بالتحيز هو bias. هذا المفهوم يمثل مدى بعد النموذج الحالي عن النموذج الصحيح. أي لنفترض أننا نريد بناء نموذج يمكنه تمثيل العلاقات الخطية و لكن النموذج الحقيقي للبيانات هو قطع ناقص، عندها سيكون هناك bias عالي لأن النموذج الخاص بنا لا يستطيع تمثيل النموذج الحقيقي مهما تم تدريبه. بينما في حال كان النموذج الحقيقي خطي و كان النموذج الخاص بنا هو كثير حدود polynomial من الرتبة الثانية أو حتى الثالثة، عندها لن يكون هناك bias و ذلك لأن النموذج الخاص بنا يستطيع تمثيل العلاقة الخطية ضمنيًا (عن طريق إسناد قيم صفرية للحدود ذو الرتب العليا و ترك فقط الحد الخطي من كثير الحدود). و لكن في تلك الحالة سيكون هناك variance عالي و غالبًا ستحصل مشكلة overfitting. لذلك من الصعب معرفة أي الطريقتين أفضل بشكل مسبق، هذا يعتمد على البيانات التي لديك و ما هو توقعك لمدى تعقيد النموذج الحقيقي للبيانات (و هو أمر تصبح أفضل فيه مع الخبرة). ما أستطيع تأكيده لك بشكل مسبق، هو أنه في حال كان لديك عدد قليل من البيانات فاستعمال الشبكات العصبية لن يكون جيدًا بشكل مؤكد، لأن هذه الشبكات غالبًا ما تحتوي على الكثير من البارامترات و لذلك تحتاج إلى بيانات كثيرة. في حال وجود بيانات كثيرة فعندها يمكنك البدء بالخوارزميات التقليدية في حال أمكن تطبيقها لتأخذ فكرة عن الأداء الأدنى الذي يمكن تحقيقه خاصة أنه يمكن تدريب النماذج التقليدية بسرعة. و من ثم نقوم بزيادة تعقيد النموذج تدريجيًا حتى نحصل على نتائج جيدة. بالمختصر، في حال كان الهدف فقط تقليل ال bias فزيادة تعقيد النموذج بشكل كبير جدًا ستقلل منه و لكن ذلك على حساب ال variance و بالتالي مشكلة ال overfittnig تحياتي.
  21. و عليكم السلام، ال broadcasting هو ليس مفهوم متعلق بلغة البرمجة بايثون، و إنما متعلق بتقنية يتم تطبيقها في العمليات على المصفوفات. هذه العملية تقوم بتكرار مصفوفة أو شعاع حتى يمكن استعمالها في عملية مع مصفوفة بأبعاد أكبر. لفهم ذلك لنفترض أنه لديك مصفوفة أبعادها h*w*c و لديك مصفوفة أخرى بأبعاد h*w. في هذه الحالة يمكننا تخيل المصفوفة الأولى على أنها عبارة عن c مصفوفة من الأبعاد h*w. لذلك عند جمع المصفوفتين، يتم جمع المصفوفة الثانية مع كل واحدة من هذه ال c مصفوفة من ثم إعادة تركيبها معًا. هذه صورة أيضًا توضح المفهوم مع أمثلة بأبعاد مختلفة، لاحظ كيف يتم نسخ المصفوفة لتناسب أبعادها أبعاد المصفوفة الأخرى. في المثال الأخير أيضًا يتم نسخ المصفوفتين. تحياتي.
  22. هذه التقنية جوهرها هو تحويل العمليات التي نقوم بها بشكل طبيعي لعمليات على مصفوفات عن طريق تجميع المعادلات في مصفوفات أو أشعة و استعمال عمليات المصفوفات مثل ال dot product و غيرها بحيث يصبح لدينا نفس المعادلات و لكن بشكل مجمع في مصفوفات. الفائدة تكمن في إمكانية معالجة العمليات على المصفوات بشكل تفرعي، خاصة مع استعمال ال GPU، فال GPU لديها وحدات معالجة خاصة بالأشعة و المصفوفات تجعل العمليات أسرع بكثير مما يسرع عملية التدريب للنماذج. تحياتي.
  23. و عليكم السلام علي، الإبداع في مجال الذكاء الصنعي ليس في البرمجة، فكتابة برامج الذكاء الصنعي منذ زمن كانت تعد مرحلة مملة و رتيبة و تعيق الإبداع و التطوير السريع و ظهور أطر عمل مثل Tensorflow و PyTorch جعل إمكانية الإبداع و ابتكار أمور جديدة أسهل بكثير. حتى تبتكر شيء جديد فإنك يجب أن تقوم ببحث علمي، و للقيام بذلك هناك عدة خطوات: تحديد المجال الذي ترغب في الإسهام فيه، مثلًا مجال معالجة اللغات الطبيعية. تحديد مهمة محددة ضمن هذا المجال، مثلًا مهمة اكتشاف الإيميلات الضارة spam، طبعًا عليك التأكد أن المهمة التي اخترتها لم يتم حلها بشكل كامل و ما زال هناك إمكانية لتحسين الأداء فيها. قراءة الكثير من الأوراق البحثية عن المهمة التي اخترتها و هدف هذه المرحلة هو أن تصبح لديك فكرة عن الطرق و التقنيات المستعملة في هذه المهمة و المشاكل الموجودة لهذه التقنيات و التي تحتاج إلى حل. بعد كل هذا و بعد أن يصبح لديك دراية كبيرة بالمهمة يمكنك التفكير في حل معين لهذه المشكلة، و هنا يأتي دور الإبداع في ابتكار طرق جديدة لحل المشاكل الموجودة و بالتالي تحسين الأداء. الأمر ليس سهل أبدًا، و بالطبع لا ينصح بالبدء فيه و إنما ينصح أن تدرس الكثير من الأمور العامة عن المجال و الأمور النظرية في البداية و تقوم بالتطبيق العملي حتى تكتسب خبرة في المجال من ثم يمكنك البدء في البحث العلمي. كما أنه يجب أن تضع في الحسبان أن هذه العملية تستغرق أشهر و ربما سنوات، حيث أنك تحتاج بضعة أشهر لقراءة الأوراق و تحديد المشكلة التي تريد حلها و ما إذا كان هنالك أي مجهود من قبل أشخاص آخرين لحلها، و أشهر أو سنوات من التجريب و التفكير في حل هذه المشكلة. ليس كلامي لتثبيط طموحاتك، فالبحث العلمي هو أفضل ما يمكن للشخص القيام به في أي مجال، و لكن يجب أن يدرك الشخص مقدار الجهد الذي عليه بذله و هل هو مستعد لذلك أم يريد أن يكتفي بالتطبيق العلمي، خاصة أن البحث العلمي بشكل عام ليس مصدر دخل جيد. تحياتي.
  24. إن أي api مجانية غالبًا ما تأتي مع بعض القيود على عدد الطلبات التي يمكن إرسالها في اليوم أو الشهر. بالتالي عليك توقع وجود حدود فلا أحد سيقدم هذه الخدمة بشكل مجاني كاملًا. و وجود فئة مجانية من الخدمة هو لمن يريد تجربة الخدمة. يمكنك الإطلاع مثلًا على Mapbox فهي توفر ما تريده مع بعض القيود التي يمكنك الإطلاع عليها من هنا: https://www.mapbox.com/pricing#maps تحياتي.
  25. و عليكم السلام، في البداية عليك أن تعلم أن لغة بايثون هي لغة ضرورية لدورة الذكاء الصنعي و أول مسار في الدورة مخصص لذلك، بالتالي ستتعلم القليل من البايثون في تلك الدورة. إن صناعة التطبيقات هو مجال جيد و سيبقى مهم في سوق العمل، بالطبع يجب دائمًا مواكبة التطورات، و حاليًا في مجال صناعة التطبيقات يجب على أي مطور أن يعلم كيف يستفيد من تطبيقات الذكاء الصنعي لتسريع عمله، مثل استعمال تطبيق Copilot الذي تقدمه مايكروسوفت مجانًا و يمكنك عن طريقه جعل ال AI يقوم بقسم كبير من عملية التطوير، بالطبع يبقى عليك أن تنظم العملية و كيفية سيرها فالذكاء الصنعي جيد عندما تعطيه مهمة محددة جدًا. إن التخصص في مجال الذكاء الاصطناعي يحتاج إلى وقت أكبر بكثير و جهد أكبر، كما أن التميز في المجال يحتاج إلى معرفة جيدة في الرياضيات و متابعة مستمرة لآخر الأوراق البحثية، بالتالي يمكن اعتبار مجال تطوير التطبيقات مجال أسهل نسبيًا و يحتاج إلى وقت أقل لإتقانه خاصة مع وجود أدوات الذكاء الاصطناعي لمساعدتك. طبعًا مجال ال AI مجال ممتع أكثر، خاصة أن تطبيقاته مميزة أكثر و هذا ما يفسر الجهد الأكبر الذي يجب بذله. بالتالي الأمر يعتمد على الوقت المتوافر لديك و مدى استعدادك لبذل جهد كبير. تحياتي.
×
×
  • أضف...