Как определить пользовательский примитив с параметрами с помощью пакета Featuretools?

Я пытаюсь создать пользовательское преобразование с помощью пакета Featuretools, где я могу ввести параметр и изменить поведение функции.

Например, для следующего пользовательского класса преобразования журнала я хочу добавить базовый параметр, чтобы я мог выполнять преобразования журналов функций с разными базами:

class Log(TransformPrimitive):
    """Computes the logarithm for a numeric column."""

    name = 'log'
    input_types = [Numeric]
    return_type = Numeric

    def get_function(self):
        return np.log

Как мне реализовать такой примитив и, кроме того, как его реализовать с помощью функции featuretools.dfs()?


person Rohan George Thampi    schedule 03.07.2019    source источник


Ответы (1)


Рассмотрим функцию __init__ в классе.

Например,

class Log(TransformPrimitive):
    """Computes the logarithm for a numeric column."""

    name = 'log'
    input_types = [Numeric]
    return_type = Numeric

    def __init__(self, n=3):
        self.n = n

    def get_function(self):
        return np.log 
        # adjust for variable base, probably using something like 
        # np.log(array) / np.log(self.n)

Чтобы назвать это: log_base_n = Log(n=2).

В DFS вы должны добавить соответствующий экземпляр класса в список примитивов.

person Alexander Wang    schedule 09.07.2019