featuretools.dfs#

featuretools.dfs(dataframes=None, relationships=None, entityset=None, target_dataframe_name=None, cutoff_time=None, instance_ids=None, agg_primitives=None, trans_primitives=None, groupby_trans_primitives=None, allowed_paths=None, max_depth=2, ignore_dataframes=None, ignore_columns=None, primitive_options=None, seed_features=None, drop_contains=None, drop_exact=None, where_primitives=None, max_features=-1, cutoff_time_in_index=False, save_progress=None, features_only=False, training_window=None, approximate=None, chunk_size=None, n_jobs=1, dask_kwargs=None, verbose=False, return_types=None, progress_callback=None, include_cutoff_time=True)[source]#

计算特征矩阵和特征,给定数据框字典和关系列表.

Parameters:
  • dataframes (dict[str -> tuple(DataFrame, str, str, dict[str -> str/Woodwork.LogicalType], dict[str->str/set], boolean)]) – 数据框字典.条目格式为 {数据框名称 -> (数据框, 索引列, 时间索引, 逻辑类型, 语义标签, 创建索引)}. 注意,只有数据框是必需的.如果提供了Woodwork数据框,则其他参数将被忽略.

  • relationships (list[(str, str, str, str)]) – 数据框之间的关系列表. 列表项是一个元组,格式为 (父数据框名称, 父列, 子数据框名称, 子列).

  • entityset (EntitySet) – 已初始化的实体集.如果未定义数据框和关系,则为必需.

  • target_dataframe_name (str) – 用于进行预测的目标数据框名称.

  • cutoff_time (pd.DataFrame 或 Datetime 或 str) – 指定计算每个实例特征的时间. 生成的特征矩阵将使用截止时间之前和包括截止时间的数据.可以是DataFrame、单个值或可解析为datetime的字符串. 如果传递了DataFrame,则必须在其列中包含要计算特征的实例ID,列名与目标数据框索引相同或为`instance_id`. 截止时间值必须在列中,列名与目标数据框时间索引相同或为`time`.如果DataFrame有多于两列,任何额外列将添加到生成的特征矩阵中. 如果传递了单个值,则此值将用于所有实例.

  • instance_ids (list) – 要计算特征的实例列表.仅在cutoff_time为单个datetime时使用.

  • agg_primitives (list[str 或 AggregationPrimitive], 可选) –

    要应用的聚合特征类型列表.

    默认值: [“sum”, “std”, “max”, “skew”, “min”, “mean”, “count”, “percent_true”, “num_unique”, “mode”]

  • trans_primitives (list[str 或 TransformPrimitive], 可选) –

    要应用的转换特征函数列表.

    默认值: [“day”, “year”, “month”, “weekday”, “haversine”, “num_words”, “num_characters”]

  • groupby_trans_primitives (list[str 或 TransformPrimitive], 可选) – 用于创建GroupByTransformFeatures的转换原语列表.

  • allowed_paths (list[list[str]]) – 允许创建特征的数据框路径.

  • max_depth (int) – 特征的最大允许深度.

  • ignore_dataframes (list[str], 可选) – 创建特征时要列入黑名单的数据框列表.

  • ignore_columns (dict[str -> list[str]], 可选) – 每个数据框中要列入黑名单的特定列列表.

  • primitive_options (list[dict[str 或 tuple[str] -> dict] 或 dict[str 或 tuple[str] -> dict, 可选]) –

    为单个原语或一组原语指定选项. 选项字典列表用于为具有多个输入的原语指定每个输入的选项.每个选项``dict``可以具有以下键:

    "include_dataframes"

    创建原语特征时要包含的数据框列表.所有其他数据框将被忽略 (list[str]).

    "ignore_dataframes"

    创建原语特征时要列入黑名单的数据框列表 (list[str]).

    "include_columns"

    每个数据框中要包含的特定列列表.给定数据框中的所有其他列将被忽略 (dict[str -> list[str]]).

    "ignore_columns"

    每个数据框中要列入黑名单的特定列列表 (dict[str -> list[str]]).

    "include_groupby_dataframes"

    查找分组时要包含的数据框列表.所有其他数据框将被忽略 (list[str]).

    "ignore_groupby_dataframes"

    查找分组时要列入黑名单的数据框列表 (list[str]).

    "include_groupby_columns"

    每个数据框中要包含为分组的特定列列表(如果适用).每个数据框中的所有其他列将被忽略 (dict[str -> list[str]]).

    "ignore_groupby_columns"

    每个数据框中要列入黑名单为分组的特定列列表 (dict[str -> list[str]]).

  • seed_features (list[FeatureBase]) – 要使用的手动定义特征列表.

  • drop_contains (list[str], 可选) – 删除名称中包含这些字符串的特征.

  • drop_exact (list[str], 可选) – 删除名称与这些字符串完全匹配的特征.

  • where_primitives (list[str 或 PrimitiveBase], 可选) –

    要应用where子句的原语名称(或类型)列表.

    默认值:

    [“count”]

  • max_features (int, 可选) – 生成的特征数量上限.如果为-1,则无限制.

  • features_only (bool, 可选) – 如果为True,则返回特征列表而不计算特征矩阵.

  • cutoff_time_in_index (bool) – 如果为True,返回具有MultiIndex的DataFrame,其中第二个索引是截止时间(第一个是实例ID). DataFrame将按(时间, 实例ID)排序.

  • training_window (Timedelta 或 str, 可选) – 定义计算特征时截止时间前可以使用多少时间数据的窗口.如果为``None``,则使用截止时间前的所有数据.默认为``None``. 当使用Pandas Timedeltas时,月和年单位不是相对的.相对单位应作为Featuretools Timedelta或字符串传递.

  • approximate (Timedelta) – 用于将具有相似截止时间的实例分组的桶大小,以减少计算成本高的特征的计算量.例如, 如果桶大小为24小时,则同一天内具有截止时间的所有实例将使用相同的计算来计算昂贵的特征.

  • save_progress (str, 可选) – 保存中间计算结果的路径.

  • n_jobs (int, 可选) – 计算特征矩阵时要使用的并行进程数.

  • chunk_size (int 或 float 或 None 或 "cutoff time", 可选) – 每次计算的输出特征矩阵行数. 如果传递大于0的整数,将尝试每次使用该行数.如果传递0到1之间的浮点数,则将块大小设置为所有实例的该百分比. 如果传递字符串”cutoff time”,则按截止时间分割行.

  • dask_kwargs (dict, 可选) –

    创建dask客户端和调度程序时要传递的关键字参数字典.即使未设置n_jobs,使用`dask_kwargs`也将启用多进程. 主要参数:

    cluster (str 或 dask.distributed.LocalCluster):

    要发送任务的集群或集群地址.如果未指定,将创建一个集群.

    diagnostics port (int):

    用于Web仪表板的端口号.如果未指定,则不启用Web界面.

    还将接受LocalCluster的有效关键字参数.

  • return_types (list[woodwork.ColumnSchema] 或 str, 可选) – 定义要返回的列类型的ColumnSchemas列表.如果为None,默认返回所有数值、分类和布尔类型. 如果给定为字符串’all’,则返回所有可用类型.

  • progress_callback (callable) –

    随着进度更新调用的函数.具有以下参数:

    update: 自上次调用以来的进度变化百分比(0到100之间的浮点数) progress_percent: 已完成计算的百分比(0到100之间的浮点数) time_elapsed: 自调用开始以来经过的总时间(以秒为单位)

  • include_cutoff_time (bool) – 在特征计算中包含截止时间的数据.默认为``True``.

Returns:

生成的特征定义列表和特征矩阵.如果``features_only``为``True``,则不会生成特征矩阵.

Return type:

list[FeatureBase], pd.DataFrame

Examples

from featuretools.primitives import Mean
# 每个实例的截止时间
dataframes = {
    "sessions" : (session_df, "id"),
    "transactions" : (transactions_df, "id", "transaction_time")
}
relationships = [("sessions", "id", "transactions", "session_id")]
feature_matrix, features = dfs(dataframes=dataframes,
                               relationships=relationships,
                               target_dataframe_name="transactions",
                               cutoff_time=cutoff_times)
feature_matrix

features = dfs(dataframes=dataframes,
               relationships=relationships,
               target_dataframe_name="transactions",
               features_only=True)