إدخال البيانات باستخدام KNN و SoftImpute

1

كنت أرغب في إجراء مقارنة بين قيم الاحتساب من حزمة fancyimpute باستخدام MICE و KNN و Soft Impute ، ومع ذلك ، عندما قمت بتشغيل الكود الخاص بي ، فإن KNN و SoftImpute ينسبان فقط 0 لقيمتي مقارنة بالقيم الأكثر حساسية التي تنسبها MICE.

imputed_numerical=train[['Age']].select_dtypes(include='number']).as_matrix()

Age_MICE=MICE().complete(imputed_numerical)
Age_KNN=KNN(k=3).complete(imputed_numerical)
Age_SoftImpute=SoftImpute().complete(imputed_numerical)

أضع النتائج في إطار بيانات يبدو كالتالي:

Not_Imputed MICE    KNN SoftImpute
   22.0    [22.0]  [22.0]  [22.0]
   38.0    [38.0]  [38.0]  [38.0]
   26.0    [26.0]  [26.0]  [26.0]
   35.0    [35.0]  [35.0]  [35.0]
   35.0    [35.0]  [35.0]  [35.0]
   NaN     [29]    [0.0]   [0.0]
   54.0    [54.0]  [54.0]  [54.0]
   2.0     [2.0]   [2.0]   [2.0]
   27.0    [27.0]  [27.0]  [27.0]
   14.0    [14.0]  [14.0]  [14.0]
   4.0     [4.0]   [4.0]   [4.0]
   58.0    [58.0]  [58.0]  [58.0]
   20.0    [20.0]  [20.0]  [20.0]
   39.0    [39.0]  [39.0]  [39.0]
   14.0    [14.0]  [14.0]  [14.0]
   55.0    [55.0]  [55.0]  [55.0]
   2.0     [2.0]   [2.0]   [2.0]
   NaN     [27.6]  [0.0]   [0.0]
   31.0    [31.0]  [31.0]  [31.0]
   NaN     [30]    [0.0]   [0.0]

السؤال: لماذا يعتبر KNN و SoftImpute فقط 0 كقيمة مكتملة؟

1 إجابة

0

تكمن المشكلة في أن هذه إجراءات متعددة المتغيرات ، ولكنك تستخدم متغيرًا واحدًا فقط (عمودًا). يقوم MICE بانحدار متعدد المتغيرات ، تأخذ KNN متوسط N الجيران ، الأقرب إلى القيمة المفقودة في مساحة متعددة الأبعاد (كل بُعد متغير) ، وأنا لست متأكدًا من softImpute ولكن من المحتمل أن يكون إجراء متعدد المتغيرات أيضًا .

على سبيل المثال ، راجع رسالة التحذير هذه من إجراء knn:

[KNN] Warning: 3/20 still missing after imputation, replacing with 0

أو هذا التحذير من SoftImpute:

RuntimeWarning: invalid value encountered in double_scalars
  return (np.sqrt(ssd) / old_norm) < self.convergence_threshold
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام