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

السؤال

Recommended Posts

  • 1
نشر

توفر مكتبة Sklearn الكلاس SimpleImputer للتعامل مع القيم المفقودة، من خلال الموديول impute:

sklearn.impute.SimpleImputer

الصيغة:

sklearn.impute.SimpleImputer(missing_values=nan, strategy='mean', fill_value=None,copy=True)

strategy:تعني الطريقة التي سيتم التعامل بها مع القيم المفقودة mean , median , most_frequent , constant.
mean سيعوض القيمة المفقودة بال mean للقيم المجاورة.
most_frequent سيعوضها بالقيمة الأكثر تكراراً.
constant بقيمة ثابتة أنت تحددها.
median  سيعوضها بال median للقيم المجاورة.
copy: فيحال ضبطها على true سيتم إنشاء نسخة من البيانات أي لن يكون التعديل على البيانات الأصلية.
missing_values: تحديد القيم التي تعتبرها كقيم مفقودة في بياناتك (مثلاً وجود NAN يعني أن القيمة مفقودة أو 0 مثلاً). ويأخذ القيم : "int, float, str, np.nan or None, default="np.nan
fill_value: نستخدم هذا الوسيط في حالة استخدمنا استراتيجية constant حيث نسند له القيمة التي نريد الاستبدال بها. افتراضياً None.
نستخدم التابع fit للقيام بعملية ال fitting على الداتا (اكتشاف القيم المفقودة و العمليات اللازمة للتعامل مع القيم المفقودة )
نستخدم التابع transform(data) لتطبيق التحويل (استبدال القيم المفقودة)
مثال:

#استيراد المكتبات اللازمة
import numpy as np
from sklearn.impute import SimpleImputer
# إنشاء داتا بسيطة بقيمة مفقودة
data=[[3, 4], [np.nan, 6]]
#SimpleImputer تطبيق الكلاس 
imp = SimpleImputer(missing_values=np.nan, strategy='constant',fill_value=5)
#على البيانات fitting عمل 
imp.fit(data)
# تطبيق التحويل
data=imp.transform(data)
print(data)
'''
[[3. 4.]
 [5. 6.]]
'''

 

  • 1
نشر

لابد أن تعلم عزيزي أن هنالك طرق مختلفة للتعامل مع القيم المفقودة، منها طريقة تضمين أو توليد بيانات جديدة بإستخدام البيانات الموجودة أصلا. و يمكننا التعامل معها على مستوى عمود واحد (وهي الطريقة التي يوفرها SimpleImputer) فهو أحد طرق التضمين لمتغير واحد Univariate Imputation.

يمكن ايضاً للدالة SimpleImputer التعامل مع البيانات الفئوية Categorical Variables، راجع المثال التالي والذي يقوم بإستبدال القيم غير المعرفة nan values  بالقيمة الأكثر شيوعاً حسب ما هو موضح في الإستراتيجية strategy.

import pandas as pd
df = pd.DataFrame([["a", "x"],
                   [np.nan, "y"],
                   ["a", np.nan],
                   ["b", "y"]], dtype="category")

imp = SimpleImputer(strategy="most_frequent")
print(imp.fit_transform(df))

يمكنك ملاحظة أن القيمة الأكثر شيوعاً في العمود الأول مختلفة عن العمود الثاني، و بالتالي في حال وجود أكثر من قيمة غير معرفة في عمودين مختلفين يتم التعامل مع كل واحد على حدة، فالأول يأخذ قيمة a و يبدلها معم كل قيمة غير معرفة ، أما الثاني فهو يأخذ القيمة y و يبدلها مع كل قيمة غير معرفة.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...