def create_or_retrieve_features()

in src/features/feature_variables_dynamic.py [0:0]


    def create_or_retrieve_features(self):
        """
        Creates & retrieves the variable names
        :return: a list of variable names to use for Fraud Detector. e.g. ["name", "address"]
        """

        prioritised_type_check_funcs = [
            self._is_email,
            self._is_ip,
            self._is_custom_numeric,
            self._is_custom_categorical
        ]

        feature_field_names = list(set(self.df.columns) - {"EVENT_LABEL", "EVENT_TIMESTAMP"})
        for field_name in feature_field_names:
            # Least priority default
            default_settings = self.field_descriptions_dict.get(field_name, {})
            variable_type = FRAUD_DETECTOR_VARTYPE_CUSTOM_TEXT
            df_col_dtype = self.df.dtypes[field_name]
            default = ""

            # Auto detector next preference
            for check in prioritised_type_check_funcs:
                type_tuple = check(field_name, self.df[field_name].iloc[0], df_col_dtype)
                if type_tuple:
                    variable_type, default = type_tuple
                    break

            # Override if values pass in setting dict
            default = default_settings.get("default", default)
            variable_type = default_settings.get("variableType", variable_type)
            data_type = self.var_type_dtype_map.get(variable_type, FRAUD_DETECTOR_DATATYPE_STRING)
            desc = default_settings.get("desc", field_name)

            self._fraud_detector_utils.try_create_variable(field_name, variable_type, data_type, default, desc)

        return feature_field_names