class_docstr: base model for data imputation
class_docstr_tok: ["base","model","for","data","imputation"]
docstr: evaluate model by randomly drop some value
  :params df: input dataframe
  :params drop_rate: percentage value that will be randomly dropped
  :return: MSE results
docstr_tok: ["evaluate","model","by","randomly","drop","some","value",":","params","df",":","input","dataframe",":","params","drop_rate",":","percentage","value","that","will","be","randomly","dropped",":","return",":","MSE","results"]
code: def evaluate(self, df, drop_rate):
      """
      evaluate model by randomly drop some value
      :params df: input dataframe
      :params drop_rate: percentage value that will be randomly dropped
      :return: MSE results
      """
      missing = df.isna() * 1
      df1 = self.impute(df)
      missing = missing.to_numpy()
      mask = np.zeros(df.shape[0] * df.shape[1])
      idx = np.random.choice(
          mask.shape[0], int(mask.shape[0] * drop_rate), replace=False
      )
      mask[idx] = 1
      mask = np.reshape(mask, (df.shape[0], df.shape[1]))
      np_df = df.to_numpy()
      np_df[mask == 1] = None
      new_df = pd.DataFrame(np_df)
      impute_df = self.impute(new_df)
      pred = impute_df.to_numpy()
      true = df1.to_numpy()
      pred[missing == 1] = 0
      true[missing == 1] = 0
      result = []
      for i in range(len(df.columns)):
          result.append(
              metrics.mean_squared_error(true[:, i], pred[:, i])
          )
      return result
  
file_path: analytics-zoo/pyzoo/zoo/chronos/autots/deprecated/preprocessing/impute/abstract.py
imports: import numpy
  import pandas
  import sklearn.metrics
  from abc import ABC, abstractmethod
label_desc: Use image node_id 2 for calling the BaseImpute obj's underlying member method code with example usage: obj.evaluate(df, drop_rate) and returns: result