Ali Ahmed55 نشر منذ 11 ساعة أرسل تقرير نشر منذ 11 ساعة السلام عليكم هو لو عندي قيمه من 0.0 الي 2.0 واستخدم الIterativeImputer طلع غير القيمه دي ولكن في نفس الفتره يعني مثل 0.1و 1.8 هل ده يكون طبيعه والا دي بيانات مش دقيق ؟ ودي البيانات قبل iterativelmputer hla_match_c_high 2.0 18565 1.0 5536 0.0 79 Name: count, dtype: int64 ودي بعد استخدم الIterativelmputer hla_match_c_high 2.0 18973 1.0 5566 1.6 1334 1.5 1042 1.7 547 1.8 418 1.4 239 1.3 206 1.2 149 0.0 86 1.9 75 1.1 68 0.9 28 0.8 20 0.7 16 0.4 8 0.1 7 0.5 6 0.2 5 0.3 4 0.6 3 Name: count, dtype: int64 2 اقتباس
0 Chihab Hedidi نشر منذ 10 ساعة أرسل تقرير نشر منذ 10 ساعة نعم هذه النتيجة طبيعية عند استخدام IterativeImputer، فهذا النوع من الـ imputation يعتمد على بناء نموذج إحصائي للتنبؤ بالقيم المفقودة بناء على العلاقات بين المتغيرات الأخرى في البيانات. و بما أن IterativeImputer يحاول التنبؤ بقيم مفقودة كناتج لمعادلات رياضية، فإنه يولد أرقاما مستمرة وليس فقط القيم الأصلية، و أيضا إذا لم تحدد قيود على نطاق القيم أو تجعل المتغير مصنفا، فالنموذج سيتعامل معه كمتغير رقمي عادي، مما يؤدي لإنتاج أرقام عشرية. و إذا كان المتغير يمثل فئات مثل درجات توافق، فمن الأفضل التعامل معه كمتغير تصنيفي وليس رقمي مستمر، وفي هذه الحالة يمكنك استخدام SimpleImputer مع طريقة مثل most_frequent أو KNNImputer للحفاظ على القيم الأصلية. 1 اقتباس
0 Mustafa Suleiman نشر منذ 10 ساعة أرسل تقرير نشر منذ 10 ساعة IterativeImputer يعتمد على نماذج إحصائية كالانحدار الخطي أو أشجار القرار لتقدير القيم المفقودة، وتلك النماذج تُنتج توقعات مستمرة (أرقام عشرية)، حتى لو كانت البيانات الأصلية منفصلة أي أعداد صحيحة. بمعنى لو النموذج يتنبأ بقيمة بين 1 و2 (مثل 1.8)، فسيُدخلها كقيمة عشرية بدلًا من تقريبها إلى 2. والسلوك متوقع لأن IterativeImputer مصمم للتعامل مع البيانات العددية المستمرة بشكل افتراضي، لكن لو متغيرك يمثل فئات أو أعدادًا صحيحة (مثل عدد التطابقات الجينية)، فإن القيم العشرية لا معنى لها وذلك يعني مشكلة في النموذج أو طريقة التعامل مع البيانات. بالتالي لو المتغير يجب أن يكون عددًا صحيحًا، فالقيم العشرية غير منطقية وتشوّه تفسير البيانات. ولو المتغير يمثل درجة مستمرة، فتكون القيم مقبولة، لكن يُفضَّل التحقق من سياق البيانات فهي الأساس. أي تفقد هل المتغير يجب أن يكون، فئويًا/منفصلًا، كـ 0 = لا يوجد تطابق، 1 = تطابق جزئي، 2 = تطابق كامل. أو عدديًا مستمرًا مثل نسبة التطابق الدقيقة. في الحالة الأولى استخدم SimpleImputer مع إستراتيجية most_frequent (إدخال المنوال) بدلًا من IterativeImputer. في الثانية استخدم IterativeImputer ثم قَرِّب النتائج إلى أقرب عدد صحيح: from sklearn.impute import IterativeImputer import numpy as np imputer = IterativeImputer() data_imputed = imputer.fit_transform(data) data_imputed = np.round(data_imputed).astype(int) 1 اقتباس
0 Ali Ahmed55 نشر منذ 8 ساعة الكاتب أرسل تقرير نشر منذ 8 ساعة الف شكراا جدا لحضرتكم جزاكم الله كل خير اقتباس
السؤال
Ali Ahmed55
السلام عليكم
هو لو عندي قيمه من 0.0 الي 2.0 واستخدم الIterativeImputer طلع غير القيمه دي ولكن في نفس الفتره يعني مثل 0.1و 1.8 هل ده يكون طبيعه والا دي بيانات مش دقيق ؟
ودي البيانات قبل iterativelmputer
ودي بعد استخدم الIterativelmputer
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.