-
المساهمات
19836 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
474
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
أثناء تعلم الأساسيات يجب التطبيق على تمارين بسيطة لتوظيف ما تعلمته وتثبيته وليس الإنتظار حتى النهاية. بعد ذلك ستحتاج إلى توظيف ما تعلمته في الأساسيات من خلال مشاريع عملية، ابحث على اليوتيوب عن "مشاريع بايثون للمبتدئين" أو python projects for beginners أثناء التطبيق العملي عليك العمل على تطوير مهارة التفكير المنطقي لديك بحل المسائل البرمجية من خلال مواقع مثلHackerrank أو codewars. أي عليك الجمع بين حل المسائل والتطبيق على المشاريع، وقبل حل المسائل البرمجية، عليك تعلم أساسيات هياكل البيانات والخوارزميات أي مفاهيم بسيطة من الـ DSA مثل: Arrays وطرق التعامل معها. Strings والخوارزميات الأساسية عليها مثل عكس النصوص، البحث عن عنصر. Time Complexity بشكل بسيط مثل فهم الفرق بين O(n) و O(n^2). وتجنب التطبيق على المشاريع الصغيرة دائمًا مثل تطبيق Todo list، ذلك جيد في البداية للتدرج في الاستيعاب، لكن عليك الإنتقال من تلك المرحلة والتطبيق على مشاريع كاملة، ولا تكتفي بالنسخ واللصق أو النقل من الشرح في الفيديو، عليك استيعاب ما تقوم بكتابته ولماذا تقوم به، وأيضًا حاول التغيير قليلاً في المشروع فذلك يجبرك على التركيز في الكود والتطبيق.
-
قبل التعويض، حدد الأعمدة التي من نوع int وfloat: import pandas as pd int_cols = df.select_dtypes(include=['int']).columns.tolist() float_cols = df.select_dtypes(include=['float']).columns.tolist() numerical_cols = int_cols + float_cols ثم استخدم IterativeImputer على الأعمدة الرقمية وسيحول جميعها إلى float مؤقتًا: from sklearn.experimental import enable_iterative_imputer from sklearn.impute import IterativeImputer imputer = IterativeImputer(random_state=42) df_imputed = pd.DataFrame( imputer.fit_transform(df[numerical_cols]), columns=numerical_cols ) ثم إعادة تحويل الأعمدة إلى أنواعها الأصلية، بتقريب القيم العشرية إلى أقرب عدد صحيح لو كان ذلك مناسب للبيانات. df_imputed[int_cols] = df_imputed[int_cols].round().astype(int) ولو لديك أعمدة غير رقمية (فئوية)، أعد دمجها، وهنا افترض أن df يحتوي أيضًا على أعمدة فئوية مثل 'category_col'. df_final = pd.concat([ df_imputed, df[['category_col']] ], axis=1)
- 6 اجابة
-
- 1
-
-
عليك إنشاء قائمتين لكل عمود، فلو لديك 3 أعمدة رقمية: العمود 1 (مثل العمر): min=0, max=100 العمود 2 (مثل الراتب): min=1000, max=10000 العمود 3 (مثل درجة الحرارة): min=-20, max=50 فستكون القوائم: min_values = [0, 1000, -20] max_values = [100, 10000, 50] ثم تحديد القيم ديناميكيًا، ففي حال الأعمدة كثيرة مثل 60 عمودًا، فتستطيع حساب الحدود لكل عمود تلقائيًا باستخدام الرباعيات أو القيم الدنيا/القصوى: import pandas as pd min_values = df[numerical_cols].quantile(0.05).tolist() max_values = df[numerical_cols].quantile(0.95).tolist() لاحظ حساب الحد الأدنى كـ 5% لكل عمود ثم حساب الحد الأقصى كـ 95% لكل عمود. ثم تمرير القوائم إلى IterativeImputer from sklearn.experimental import enable_iterative_imputer from sklearn.impute import IterativeImputer imputer = IterativeImputer( min_value=min_values, max_value=max_values, estimator=RandomForestRegressor(), max_iter=50, random_state=42 ) df_imputed = imputer.fit_transform(df[numerical_cols]) ولو الأعمدة غير مرتبة بنفس ترتيب القوائم min_values و max_values، ستُطبَّق القيم الخاطئة، لذا علينا التأكد من أن ترتيب الأعمدة في df[numerical_cols] مطابق تمامًا لترتيب القيم في min_values و max_values. numerical_cols = df.select_dtypes(include=['number']).columns.tolist() min_values = df[numerical_cols].quantile(0.05).values max_values = df[numerical_cols].quantile(0.95).values وفي حال بعض الأعمدة لا تحتاج إلى حدود (مثل الأعمدة التي يمكن أن تأخذ أي قيمة)، عليك استخدم None أو np.inf: import numpy as np min_values = [0, None, -np.inf] max_values = [100, np.inf, 50] حيث العمود الثاني والثالث بلا حدود دنيا، والعمود الثاني بلا حدود قصوى.
- 6 اجابة
-
- 1
-
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
-
أثناء التثبيت أرجو إختيار default locale إن استمرت المشكلة، قم بتجربة تغيير ذلك إلى English, United States بدلاً من default locale.
-
الأهم هو الأساسيات، فالمكتبات قائمة على اللغة البرمجية وهي بايثون، بالتالي إتقان أساسيات اللغة مثل الهياكل البيانية (القوائم، القواميس، المجموعات)، التحكم بالتدفق (الشروط، الحلقات)، الدوال، والكائنات البرمجية Classes بمعنى OOP. بعد تخطي تلك المرحلة وتنفيذ مشاريع متوسطة المستوى، تستطيع البحث عن أفضل الممارسات عند كتابة كود بايثون Python best practices وكيفية عمل refactoring للكود. ثم ابدء في حل المسائل البرمجية من خلال منصات مثل LeetCode أو HackerRank. بعد ذلك تقوم بالتعمق في تعلم المكتبات مثل pandas وفهم الميثودز التي توفرها المكتبة بشكل عميق لتتمكن من استخدامها كما ينبغي. وبالطبع تنفيذ مشاريع صغيرة باستخدام Pandas لتحليل مجموعات بيانات مختلفة، للتطبيق على المفاهيم وتثبيت المعلومات، ثم زيادة صعوبة المشاريع شيئًا فشيئًا. ثم اطلع على مشاريع مفتوحة المصدر على منصات مثل GitHub، ودراسة كيفية تنظيم الكود وطريقة كتابته وربطه ببعضه البعض، كتابة التوثيق، واستخدام الـ Design patterns. بمعنى قم بتحليل كود من مكتبات شهيرة، ففهم كيفية كتابة مكتبات ووحدات برمجية مستخدمة على نطاق واسع يوفر رؤى قيمة حول أفضل الممارسات.
- 5 اجابة
-
- 1
-
-
المشكلة في السطر التالي: data_train[original_dtypes.select_dtypes(include=['int64']).columns] = original_dtypes.select_dtypes(include=['int64']).astype(int) فما تريده هو تحويل الأعمدة التي كانت في الأصل من نوع صحيح int64 مرة أخرى إلى أعداد صحيحة بعد الإكمال، ولكن ما يتم في الكود هو تعيين أنواع البيانات الأصلية المحولة إلى أعداد صحيحة بدلاً من تحويل بيانات الأعمدة نفسها. بمعنى original_dtypes.select_dtypes(include=['int64']).columns يجلب أسماء الأعمدة التي كانت في الأصل من نوع int64. original_dtypes.select_dtypes(include=['int64']).astype(int) يعمل على تحويل أنواع البيانات التي تكون كائنات dtype إلى أعداد صحيحة، وذلك غير منطقي لأنك تريد تحويل القيم في الأعمدة إلى أعداد صحيحة وليس أنواع البيانات. عليك تطبيق دالة astype(int) مباشرة على بيانات تلك الأعمدة وليس على معلومات أنواع البيانات. data_train = ordinalencoder_data(data_train) original_dtypes = data_train.dtypes.copy() imputer = IterativeImputer(max_iter=5, random_state=42, initial_strategy='mean') imputer_data = imputer.fit_transform(data_train) data_train = pd.DataFrame(imputer_data, columns=data_train.columns) int_columns = original_dtypes[original_dtypes == 'int64'].index data_train[int_columns] = data_train[int_columns].astype(int) print(data_train.info())
- 6 اجابة
-
- 1
-
-
المشكلة تعني الاستيراد من نفس الملف admin.py حيث أنك كتبت بداخله التالي: from .admin import CustomUserAdmin أرجو حذف ذلك السطر، فلا نستطيع الاستيراد من نفس الملف ونقل CustomUserAdmin إلى ما بعد الاستيرادات مباشرًة، لكي تتمكن من استخدام admin.site.register(User, CustomUserAdmin)
- 6 اجابة
-
- 1
-
-
ستحتاج إلى مكتبة لفعل ذلك والأسهل هو استخدام pyttsx3 من خلال بايثون وهي تعمل بدون إنترنت، حيث تستخدم محركات TTS المثبتة مسبقًا على النظام مثل SAPI5 على Windows أو espeak على Linux. تثبيت المكتبة: pip install pyttsx3 وإليك مثال للاستخدام: import pyttsx3 text = "مرحبا كيف حالك" engine = pyttsx3.init() engine.setProperty('rate', 150) engine.setProperty('volume', 1.0) engine.say(text) engine.save_to_file(text, 'output.mp3') engine.runAndWait() rate هي سرعة الكلام والقيمة الإفتراضية هي 200، و volume هو مستوى الصوت ما بين 0 و 1. save_to_file تقوم بحفظ الصوت في ملف لو أردت، أي ذلك إختياري. في حال واجهت مشكلة يوجد مكتبة gTTS ولكنها تتطلب اتصالًا بالإنترنت. pip install gtts playsound الاستخدام: from gtts import gTTS import playsound text = "مرحبا بك" language = 'ar' tts = gTTS(text=text, lang=language, slow=False) tts.save("output.mp3") playsound.playsound("output.mp3")
-
في pandas، توجد دوال مُخصصة لتسهيل معالجة البيانات بشكل فعال، ومنها select_dtypes وapply(). حيث select_dtypes تسمح لك بفلترة (تصفية) أعمدة الـ DataFrame حسب نوع البيانات dtypes، بالشكل التالي: df.select_dtypes(include=[int, float], exclude=[object]) include اختيار الأعمدة ذات الأنواع المحددة (مثل int، float، datetime) و exclude استبعاد الأعمدة ذات الأنواع المحددة. import pandas as pd data = {'A': [1, 2], 'B': ['x', 'y'], 'C': [3.0, 4.0]} df = pd.DataFrame(data) numeric_df = df.select_dtypes(include='number') أما apply() تطبق دالة مُخصصة على جميع الصفوف أو الأعمدة (حسب المحور axis). df.apply(func, axis=0) df.apply(func, axis=1) كالتالي: df['sum'] = df.apply(lambda row: row.sum(), axis=1) ودوال pandas مثل select_dtypes وapply() تكون أسرع بشكل عام لأنها مبنية على تحسينات مُستوى منخفض مثل C أو NumPy. أما الحلقات التقليدية (for/if) في Python تكون أبطأ، خاصة مع البيانات الكبيرة، لأنها تُنفذ بشكل تسلسلي ولا تستفيد من تحسينات المتجهات vectorization.
- 4 اجابة
-
- 1
-
-
أرجو الإنتظار قليلاً ومن المفترض أن تجدها في حسابك من خلال تبويب دوراتي، وعند الضغط عليه ستجد الدورات المشترك بها كالتالي: في حال لم تجدها أرجو التواصل مع مركز المساعدة وسيتم حل المشكلة لك.
-
لغات الويب هي HTML, CSS, JS حيث HTML توفر لك تطوير هيكل الصفحة من خلال العناصر الخاصة بها، ثم تنسيق الهيكل من خلال لغة CSS من حيث المظهر وتموضع العناصر في الصفحة كما تريد حسب التصميم الذي تنوي تنفيذه. ثم تأتي جافاسكريبت لإضافة تفاعلية للصفحة بمعنى برمجة ما الذي سيحدث عن النقر على زر معين في الصفحة مثلاً، وأيضًا تمكننا من إنشاء مواقع ديناميكية غير ثابتة بمعنى التواصل مع الخادم والحصول على بيانات وتغيير محتوى الصفحة فلا يظل ثابت، فمثلاً عند نشر سؤالك هنا أنت قمت بالإضافة إلى الموقع أي أضفت محتوى وذلك معنى موقع ديناميكي محتواه غير ثابت. بعد تعلم ما سبق ستحتاج إلى تعلم إطار أو مكتبة للواجهة الأمامية مثل React. ولو أردت إنشاء واجهة خلفية للموقع ستحتاج إلى تعلم Node.js وهي تعتمد على جافاسكريبت أيضًا. مع العلم أنه يوجد لغة PHP أيضًا لتطوير مواقع الويب وإطار لارافل الخاص بها، لكن ستحتاج إلى تعلم HTML, CSS, JS أيضًا قبل تعلمها، فهي لغة واجهة خلفية بالأساس.
-
الدورة متاحة لك مدى الحياة والتحديثات الخاصة بها كذلك، والإختبارات تستطيع التقدم لها متى تجهزت لذلك لا مشكلة. والدورة مقسمة إلى مسارات بشكل ممنهج وكل مسار به مجموعة من الأقسام وكل قسم به دروس، أي يجب دراستها بالترتيب، وتنفيذ التطبيقات العملية التي بها. إن كان هناك شيء غير واضح لك أرجو الاستفسار عنه.
-
عليك استخدام نوع البيانات الصالحة للقيم المفقودة في Pandas (Int32)، بمعنى استخدام Int32 بدلاً من float من خلال dtype='Int32' (بـ I كبيرة) لإنشاء عمود صحيح مع دعم القيم المفقودة. واستبدال np.nan بـ pd.NA من pandas لتمثيل القيم المفقودة في الأعمدة من النوع الصحيح. وإزالة التحويل إلى float، فلم يعد هناك حاجة للتحويل إلى float لأن Int32 يدعم القيم المفقودة مباشرةً. data_encoded = data_train.copy() for col in data_encoded.select_dtypes(include=['object']).columns: mask = data_encoded[col].isna() temp_data = data_encoded[col].fillna('missing') le = LabelEncoder() encoded_data = le.fit_transform(temp_data) encoded_series = pd.Series(encoded_data, dtype='Int32') encoded_series[mask] = pd.NA data_encoded[col] = encoded_series ويجب أن يكون تأكد إصدار Pandas لديك هو 0.24 أو أحدث لدعم الأنواع الصحيحة القابلة للفقدان، وفي حال تريد التعامل مع القيم المفقودة كفئة منفصلة (بدلاً من حفظها كـ NaN)، تستطيع حذف الخطوة التي تستخدم mask و pd.NA.
- 3 اجابة
-
- 1
-
-
الأمر بحاجة إلى توضيح عملي، ابحث على اليوتيوب عن "حل مشكلة certificate chain not trusted problem in SQL Server"
- 5 اجابة
-
- 1
-
-
repair تعني أنك قمت بالتثبيت من قبل، أرجو إعادة تشغيل حاسوبك، ثم البحث في شريط البحث بالويندوز بالأسفل عن SSMS إن لم يظهر شيء ابحث عن SQL Server Management Studio ثم انقر عليه للتشغيل.
- 5 اجابة
-
- 1
-
-
إذن المشكلة في تحديث الحالة state للمكون Header، في الجزء الخاص بعملية تسجيل الدخول يجب تحديث كائن المستخدم في contexts، ثم إعادة التوجيه للصفحة الرئيسية من خلال next/router. وفي كائن Header يتم قراءة الحالة التي تم تحديثها. في حال استمرت المشكلة أرفق مجلد المشروع لتفقده.
-
الفكرة ببساطة هي حفظ الملفات والبيانات على خوادم بعيدة مُتاحة عبر الإنترنت، بدلًا من تخزينها على أجهزتك المحلية (مثل الهارد ديسك)، ويتميز بإمكانية الوصول من أي مكان، مشاركة الملفات بسهولة، وتقليل تكاليف الصيانة، ويعتمد على تقنيات مثل الخوادم الافتراضية والتوزيع الجغرافي لضمان السرعة والاستمرارية. والخوادم المستخدمة في ذلك هي خوادم مادية Dedicated Servers، بمعنى أجهزة فعلية مملوكة أو مؤجرة من مراكز بيانات. أو خوادم افتراضية VPS/Cloud Servers، أي موارد مُجزأة من خوادم كبيرة تُقدمها شركات مثل (AWS، Google Cloud، Microsoft Azure). أو التخزين الموزع مثل نظام CDN لتسريع الوصول للبيانات عالميًا، بمعنى وجود سيرفرات في بلاد مختلفة حول العالم لتسريع الوصول للبيانات للمستخدمين في تلك المناطق. والأمر ليس بتلك السهولة، فذلك بحاجة إلى مركز بيانات ضخم لتصبح لديك منصة تخزين سحابي، ألقي نظرة على التالي: ذلك هو مركز البيانات الذي أتحدث عنه، وبالطبع الأمر بحاجة إلى مهندسي برمجيات متخصصين في قواعد البيانات وفي الـ DevOPS، بالإضافة إلى البرمجة.
-
قم بتنفيذ: jupyter contrib nbextension install --user ثم: pip install jupyter_nbextensions_configurator ثم: jupyter nbextensions_configurator enable --user
- 4 اجابة
-
- 1
-
-
ذلك نموذج تعلم عميق مُصمم خصيصًا لتحليل البقاء Survival Analysis مع مراعاة المخاطر المتعددة المُتنافسة Competing Risks، والفائدة منه التنبؤ بوقت حدوث حدث ما (مثل الوفاة، الفشل، الانتكاسة) في وجود أحداث متعددة قد تمنع حدوث الحدث الرئيسي. بمعنى يتميز بمعالجة المخاطر المُتنافسة أي التعامل مع سيناريوهات توجد فيها أحداث متعددة تؤثر على بعضها البعض كوفاة مريض بسبب سببين مختلفين، أو تحليل مغادرة العملاء مع أسباب متنافسة مثل الانتقال إلى منافس أو إلغاء الخدمة. وعدم افتراض توزيع معين، أي لا يفترض النموذج شكلًا محددًا لوظيفة الخطر، على عكس نماذج مثل Cox Proportional Hazards التي تفترض تناسبًا خطيًا للمخاطر. ويستخدم شبكات عصبية عميقة لاكتشاف العلاقات المعقدة والغير خطية بين الميزات ووقت الحدث. والتنبؤ بتوزيع الوقت بدلًا من تقدير خطر لحظي، يُخرج النموذج توزيعًا احتماليًا لوقت الحدث لكل خطر على حدة. ويعمل بالآلية التالية، يُدرب النموذج على بيانات تحتوي على: ميزات المريض/العينة Features. وقت المراقبة Time-to-event. نوع الحدث Event Type أو الإخفاق Censoring. الهندسة المعمارية: طبقات الإدخال: تستقبل الميزات (مثل العمر، التشخيص الطبي). طبقات مخفية: تتعلم تمثيلات غير خطية للبيانات. طبقات الإخراج: تُنتج احتمالية حدوث كل حدث في فترات زمنية محددة. دالة الخسارة Loss Function تجمع بين: خسارة الاحتمالية السلبية Negative Log-Likelihood لضمان دقة التنبؤات. عقوبة الاختلاف Difference Penalty لتجنب القفزات المفاجئة في التوزيع الزمني.
- 8 اجابة
-
- 1
-
-
ستجدين أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
