docs: def rmse(self):
      """Get RMSE for regression model evaluation results.
  
      Returns:
        the RMSE float number.
  
      Raises:
        Exception if the CSV headers do not include 'target' or 'predicted', or BigQuery
        does not return 'target' or 'predicted' column, or if target or predicted is not
        number.
      """
  
      if self._input_csv_files:
        df = self._get_data_from_csv_files()
        if 'target' not in df or 'predicted' not in df:
          raise ValueError('Cannot find "target" or "predicted" column')
  
        df = df[['target', 'predicted']].apply(pd.to_numeric)
        # if df is empty or contains non-numeric, scikit learn will raise error.
        mse = mean_squared_error(df['target'], df['predicted'])
        return math.sqrt(mse)
      elif self._bigquery:
        query = bq.Query("""
          SELECT
            SQRT(SUM(ABS(predicted-target) * ABS(predicted-target)) / COUNT(*)) as rmse
          FROM
            %s""" % self._bigquery)
        df = self._get_data_from_bigquery([query])
        if df.empty:
          return None
        return df['rmse'][0]