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

السؤال

Recommended Posts

  • 0
نشر

للتوضيح، التقنية بإختصار شديد، طريقة إحصائية ذكية لـ ملء الفراغات (القيم المفقودة) في مجموعة البيانات، عن طريق:

  1. تخمين القيم المفقودة بشكل متكرر باستخدام علاقات المتغيرات الأخرى.
  2. تكرار العملية عدة مرات لإنشاء عدة نسخ من البيانات المكتملة (لتقليل الخطأ).
  3. دمج النتائج من جميع النسخ للحصول على تقدير أدق للقيم المفقودة.

وتتوفر في مكتبات مختلفة أولها مكتبة statsmodels تحتوي على دعم مُدمج لـ MICE عبر IterativeImputer.

أو sklearn في إصدارات حديثة (≥0.24)، متوفر استخدام IterativeImputer من sklearn.impute.

أو fancyimpute وهي مكتبة خارجية تُوَدِّع خوارزميات متقدمة للتعامل مع البيانات المفقودة، بما في ذلك MICE.

مثلاً من خلال  IterativeImputer من sklearn:

import pandas as pd
import numpy as np
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer

data = pd.DataFrame({
    'A': [1, 2, np.nan, 4, 5],
    'B': [np.nan, 2, 3, 4, 5],
    'C': [1, 2, 3, np.nan, 5]
})

imputer = IterativeImputer(
    max_iter=10,    
    random_state=42,
    initial_strategy='mean'
)

imputed_data = imputer.fit_transform(data)

imputed_df = pd.DataFrame(imputed_data, columns=data.columns)
print(imputed_df)

أو من خلال fancyimpute التي توفر خوارزميات متقدمة مثل Matrix Factorization وKNN وMICE، لكنها أبطأ مع البيانات الكبيرة.

from fancyimpute import IterativeImputer

imputer = IterativeImputer(n_imputations=5, max_iter=10)

imputed_data = imputer.fit_transform(data)

imputed_df = pd.DataFrame(imputed_data, columns=data.columns)
print(imputed_df)

بمعنى sklearn أسرع لكن بها دعم محدود للنماذج وهي أفضل للمجموعات الصغيرة، بينما fancyimpute تدعم نماذج معقدة لكن أبطأ بسبب اعتمادها على TensorFlow وليس دائمًا بسبب ذلك، بل بسبب التطبيقات الداخلية، وتتطلب موارد حاسوبية أعلى.

عامًة sklearn مُفضَّلة في معظم الحالات من حيث السرعة والكفاءة بالنسبة للبيانات الصغيرة أو متوسطة الحجم أي  أقل من ١٠٠ ألف عينة.

أما fancyimpute لو أردت تجربة خوارزميات غير موجودة في sklearn (مثل MatrixFactorization)، أو بحاجة إلى خيارات متقدمة للبيانات المعقدة مثل الصور أو النصوص.

  • 0
نشر
بتاريخ 13 ساعة قال Mustafa Suleiman:

للتوضيح، التقنية بإختصار شديد، طريقة إحصائية ذكية لـ ملء الفراغات (القيم المفقودة) في مجموعة البيانات، عن طريق:

  1. تخمين القيم المفقودة بشكل متكرر باستخدام علاقات المتغيرات الأخرى.
  2. تكرار العملية عدة مرات لإنشاء عدة نسخ من البيانات المكتملة (لتقليل الخطأ).
  3. دمج النتائج من جميع النسخ للحصول على تقدير أدق للقيم المفقودة.

وتتوفر في مكتبات مختلفة أولها مكتبة statsmodels تحتوي على دعم مُدمج لـ MICE عبر IterativeImputer.

أو sklearn في إصدارات حديثة (≥0.24)، متوفر استخدام IterativeImputer من sklearn.impute.

أو fancyimpute وهي مكتبة خارجية تُوَدِّع خوارزميات متقدمة للتعامل مع البيانات المفقودة، بما في ذلك MICE.

مثلاً من خلال  IterativeImputer من sklearn:

import pandas as pd
import numpy as np
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer

data = pd.DataFrame({
    'A': [1, 2, np.nan, 4, 5],
    'B': [np.nan, 2, 3, 4, 5],
    'C': [1, 2, 3, np.nan, 5]
})

imputer = IterativeImputer(
    max_iter=10,    
    random_state=42,
    initial_strategy='mean'
)

imputed_data = imputer.fit_transform(data)

imputed_df = pd.DataFrame(imputed_data, columns=data.columns)
print(imputed_df)

أو من خلال fancyimpute التي توفر خوارزميات متقدمة مثل Matrix Factorization وKNN وMICE، لكنها أبطأ مع البيانات الكبيرة.

from fancyimpute import IterativeImputer

imputer = IterativeImputer(n_imputations=5, max_iter=10)

imputed_data = imputer.fit_transform(data)

imputed_df = pd.DataFrame(imputed_data, columns=data.columns)
print(imputed_df)

بمعنى sklearn أسرع لكن بها دعم محدود للنماذج وهي أفضل للمجموعات الصغيرة، بينما fancyimpute تدعم نماذج معقدة لكن أبطأ بسبب اعتمادها على TensorFlow وليس دائمًا بسبب ذلك، بل بسبب التطبيقات الداخلية، وتتطلب موارد حاسوبية أعلى.

عامًة sklearn مُفضَّلة في معظم الحالات من حيث السرعة والكفاءة بالنسبة للبيانات الصغيرة أو متوسطة الحجم أي  أقل من ١٠٠ ألف عينة.

أما fancyimpute لو أردت تجربة خوارزميات غير موجودة في sklearn (مثل MatrixFactorization)، أو بحاجة إلى خيارات متقدمة للبيانات المعقدة مثل الصور أو النصوص.

طيب معليش عندي سوالين

1- هو الازم ان تكون البيانات كلها عبار عن ارقم ؟

2- بعد استخدم الخورزميه دي هيعمل نسخ جديد من البيانات والا هعويض القيمه الNull بلقيمه الجديد ؟

  • 0
نشر
بتاريخ 5 ساعة قال Ali Ahmed55:

طيب معليش عندي سوالين

1- هو الازم ان تكون البيانات كلها عبار عن ارقم ؟

2- بعد استخدم الخورزميه دي هيعمل نسخ جديد من البيانات والا هعويض القيمه الNull بلقيمه الجديد ؟

تقنية MICE تعمل بشكل أفضل مع البيانات الرقمية، وذلك لاستخدام العلاقات الإحصائية بين المتغيرات لملء القيم المفقودة، أما البيانات الفئوية Categorical فتستطيع التعامل معها ولكنها تتطلب بعض المعالجة المسبقة، مثل تحويلها إلى أرقام باستخدام الترميز Encoding.

وسيتم استبدال القيم الفارغة Null بالقيم الجديدة، لأنّ MICE تقوم بملء الفراغات، فالهدف الرئيسي لها هو ملء القيم المفقودة في مجموعة البيانات الأصلية، ولا تقوم بإنشاء نسخ جديدة كاملة من البيانات، بل تحديث القيم المفقودة في البيانات الأصلية حسب التقديرات التي تم الحصول عليها من خلال العملية التكرارية.

  • 0
نشر
بتاريخ 34 دقائق مضت قال Mustafa Suleiman:

تقنية MICE تعمل بشكل أفضل مع البيانات الرقمية، وذلك لاستخدام العلاقات الإحصائية بين المتغيرات لملء القيم المفقودة، أما البيانات الفئوية Categorical فتستطيع التعامل معها ولكنها تتطلب بعض المعالجة المسبقة، مثل تحويلها إلى أرقام باستخدام الترميز Encoding.

وسيتم استبدال القيم الفارغة Null بالقيم الجديدة، لأنّ MICE تقوم بملء الفراغات، فالهدف الرئيسي لها هو ملء القيم المفقودة في مجموعة البيانات الأصلية، ولا تقوم بإنشاء نسخ جديدة كاملة من البيانات، بل تحديث القيم المفقودة في البيانات الأصلية حسب التقديرات التي تم الحصول عليها من خلال العملية التكرارية.

الف شكرااا جدا لحضرتك

جزاك الله كل خير

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...