我对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")
答案 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()
值的格式是数据框,对吧?