#dataframe #missing-data #fancyimpute
#фрейм данных #отсутствуют данные #причудливый имп
Вопрос:
Я пытался следовать https://pypi.org/project/fancyimpute /
# print mean squared error for the four imputation methods above
ii_mse = ((X_filled_ii[missing_mask] - X[missing_mask]) ** 2).mean()
print("Iterative Imputer norm minimization MSE: %f" % ii_mse)
nnm_mse = ((X_filled_nnm[missing_mask] - X[missing_mask]) ** 2).mean()
print("Nuclear norm minimization MSE: %f" % nnm_mse)
softImpute_mse = ((X_filled_softimpute[missing_mask] - X[missing_mask]) ** 2).mean()
print("SoftImpute MSE: %f" % softImpute_mse)
knn_mse = ((X_filled_knn[missing_mask] - X[missing_mask]) ** 2).mean()
print("knnImpute MSE: %f" % knn_mse)
Что такое missing_mask и как я могу получить его из фрейма данных с отсутствующими значениями?
Ответ №1:
Отсутствующая маска — это логический массив или набор индексов, в которых отсутствуют ваши данные. Допустим, например, у вас есть массив с некоторыми отсутствующими значениями следующим образом.
[ 1 2] [ 3 NA]
Отсутствующей маской будет другой массив логических значений, записи в котором являются True в том месте, где отсутствуют ваши данные. В этом случае это будет:
[Ложь False] [Ложь True]
Пожалуйста, смотрите эту страницу для получения соответствующей функции в pandas. https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas .DataFrame.mask.html
Если вы хотите создать отсутствующую маску в исходном наборе данных, вы можете использовать df.isna() или df.isnull().
Однако в вашем случае эта процедура не имеет значения. У вас уже есть набор данных с отсутствующими значениями. Просто запустите вменение для этого набора данных. Отсутствующая маска в руководстве FancyImpute используется только в том случае, если вы, возможно, хотите рассчитать показатели производительности или искусственно создать набор данных с отсутствующими значениями, чтобы затем выполнить вменение.
Надеюсь, это было полезно и удачи!