Module sktmls.models.contrib.conditional_generic_logic_model

Classes

class ConditionalGenericLogicModel (model_name: str, model_version: str, features: List[str], models: List[Any], preprocess_logics: List[Dict[str, List[Any]]], postprocess_logics: List[Dict[str, List[Any]]], predict_fns: List[str], model_selection_logic: Dict[str, List[Any]] = {'abs': 0}, data: Dict[str, Any] = {})

MLS 모델 레지스트리에 등록되는 다수 모델 기반의 클래스입니다.

모델 선택 로직으로 적용할 모델을 선택한 뒤 전처리 로직과 후처리 로직을 기반으로 프로세스합니다.

GenericLogicModel과 동작 원리는 동일하나, models에 여러 개의 ML 라이브러리로 학습된 모델을 저장해 두고 model_selection_logic을 통해 하나를 선택하여 predict를 수행합니다.

Args

  • model_name: (str) 모델 이름
  • model_version: (str) 모델 버전
  • features: (list(str)) 피쳐 이름 리스트
  • models: ML 라이브러리로 학습한 모델 객체 리스트
  • preprocess_logics: (list(dict)) 각 모델에 대해 전달된 피쳐 x로부터 ML모델의 predict 함수에 input으로 들어갈 preprocessed_x를 만드는 전처리 로직 리스트
  • postprocess_logics: (list(dict)) 각 ML모델의 predict 함수 결과로 얻어진 y로부터 리턴 body(items 리스트)를 만드는 후처리 로직 리스트
  • predict_fns: (list(str)) ML모델의 추론 함수 이름 (predict|predict_proba|none)
    • none 전달 시 ML모델 추론을 사용하지 않습니다 (룰 모델).
    • model_libpytorch 인 경우 이 파라미터는 무시됩니다.
  • model_selection_logic: (dict) models의 모델 중 하나를 선택하는 로직 (기본값: {"abs": 0} (models[0] 모델 사용))
    • 정수 반환 시 models의 인덱스로 사용합니다.
    • list(dict) 반환 시 즉시 그 값을 리턴합니다. 이 때 유효한 response 형식이어야 합니다.
  • data: (optional) (dict) 각 모델의 preprocess_logicpostprocess_logic에서 피쳐와 함께 "var" 참조할 추가 데이터 (기본값: {})
    • 피쳐 이름과 같은 키 존재 시 피쳐 값을 덮어쓰게 됩니다. 주의하세요!

models, preprocess_logics, postprocess_logics, predict_fnsGenericLogicModelmodel, preprocess_logic, postprocess_logic, predict_fn을 리스트로 여러 개 가지고 있는 형태입니다.

자세한 형식은 GenericLogicModel 문서를 참조하세요.

Example

my_model_v1 = ConditionalGenericLogicModel( model_name="my_model", model_version="v1", features=["feature1", "feature2", "feature3", "embedding_vector", "context_feature1", "context_feature2"], models=[model0, model1], preprocess_logics=[preprocess_logic0, preprocess_logic1], postprocess_logics=[postprocess_logic0, postprocess_logic1], predict_fns=["predict", "predict_proba"], model_selection_logic={ "if": [ {">": [{"var": "feature1"}, 3.0]}, 0, 1 ] }, data={} )

Ancestors

Methods

def predict(self, x: List[Any], **kwargs) ‑> Dict[str, Any]

Inherited members