使用自定义变量类型创建列表类型的自定义基本功能

时间:2019-07-24 14:00:51

标签: python featuretools

我对Featuretools的make_agg_premitives函数有疑问。

我的数据中包含由列表格式组成的值。

例如,

    id       products 
    a         ['a', 'b', 'c']
    b         ['a','c']
    a         ['a','c']

我想通过使用各种自定义函数来汇总products列:

def len_lists(values):
   return len(a)

len_ = make_agg_primitive(function = len_lists,
                           input_types = [?????],
                           return_type = ft.variable_types.Numeric,
                           description="length of a list related instance")

2 个答案:

答案 0 :(得分:1)

您可以使用featuretools创建可与自定义基元一起使用的自定义变量类型,以生成所需的变换功能。

  

注意:您要执行的操作实际上是转换原语,而不是聚合原语。

使用示例创建一个自定义列表类型

from featuretools.variable_types import Variable

class List(Variable):
    type_string = "list"

现在,让我们使用新的List类型来创建自定义转换原语,并为包含List变量类型的简单实体集生成功能。

from featuretools.primitives import make_trans_primitive
from featuretools.variable_types import Numeric
import pandas as pd
import featuretools as ft

def len_list(values):
    return values.str.len()

LengthList = make_trans_primitive(function = len_list,
                                  input_types = [List],
                                  return_type = Numeric,
                                  description="length of a list related instance")

# Create a simple entityset containing list data
data = pd.DataFrame({"id": [1, 2, 3],
                     "products": [ ['a', 'b', 'c'], ['a','c'], ['b'] ]})

es = ft.EntitySet(id="data")
es = es.entity_from_dataframe(entity_id="customers",
                              dataframe=data,
                              index="id",
                              variable_types={
                                   'products': List # Use the custom List type
                              })

feature_matrix, features = ft.dfs(entityset=es,
                                  target_entity="customers",
                                  agg_primitives=[],
                                  trans_primitives=[LengthList],
                                  max_depth=2)

您现在可以查看生成的功能,其中包括使用自定义转换原语的功能

feature_matrix.head()
    LEN_LIST(products)
id
1                    3
2                    2
3                    1

答案 1 :(得分:0)

谢谢!谢谢你,我要去做各种功能!

代码中的

def len_list(值):     返回值.str.len()

值的格式是数据框,对吧?