class_docstr: Integration with the PyOD and CatBoost libraries for
  anomaly detection. Both supervised and unsupervised.
docstr: Train a model and save it to the model storage
docstr_tok: ["Train","a","model","and","save","it","to","the","model","storage"]
code: def create(self, target, df, args=None):
      """Train a model and save it to the model storage"""
      args = {} if args is None else args
      using_args = args["using"]
      model_type = using_args["type"] if "type" in using_args else None
  
      model_names = get_model_names(using_args)
  
      model_save_paths = []
      model_targets = []
      model_class_names = []
      base_path = self.model_storage.folder_get("context")
      for model_name in model_names:
          model = choose_model(
              df,
              model_name=model_name,
              model_type=model_type,
              target=target,
          )
          this_model_target = (
              "outlier" if target is None else target
          )  # output column name for unsupervised learning
          save_path = (
              "model.joblib"
              if model_name is None
              else model_name + ".joblib"
          )
          dump(model, os.path.join(base_path, save_path))
          model_save_paths.append(save_path)
          model_targets.append(this_model_target)
          model_class_names.append(model.__class__.__name__)
      model_args = {
          "model_path": model_save_paths,
          "target": model_targets,
          "model_name": model_class_names,
      }
      self.model_storage.json_set("model_args", model_args)
  
imports: from mindsdb.integrations.libs.base import BaseMLEngine
  import pandas
  from mindsdb.integrations.handlers.anomaly_detection_handler.utils import train_unsupervised, train_supervised, train_semisupervised
  from joblib import dump, load
  from pyod.models.ecod import ECOD
  from pyod.models.xgbod import XGBOD
  from catboost import CatBoostClassifier
  from pyod.models.lof import LOF
  from pyod.models.knn import KNN
  from pyod.models.pca import PCA
  from xgboost import XGBClassifier
  from sklearn.naive_bayes import GaussianNB
  import numpy
  import os
label_desc: Use image node_id 2 for calling the AnomalyDetectionHandler obj's underlying member method code with example usage: obj.create(target, df, args) without return types