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)[源码]#

根据一个数据框字典和关系列表,计算特征矩阵和特征。

参数:
  • 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 or Datetime or str) – 指定计算每个实例特征的时间点。生成的特征矩阵将使用截至(包括)截断时间点的数据。可以是数据框、单个值或可解析为日期时间的字符串。如果传入数据框,则要计算特征的实例 ID 必须位于与目标数据框索引同名的列或名为 instance_id 的列中。数据框中的截断时间值必须位于与目标数据框时间索引同名的列或名为 time 的列中。如果数据框列数超过两列,任何额外的列都将添加到结果特征矩阵中。如果传入单个值,则此值将用于所有实例。

  • instance_ids (list) – 要计算特征的实例 ID 列表。仅当 cutoff_time 是单个日期时间值时使用。

  • agg_primitives (list[strAggregationPrimitive], 可选) –

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

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

  • trans_primitives (list[strTransformPrimitive], 可选) –

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

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

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

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

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

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

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

  • primitive_options (list[dict[strtuple[str] -> dict] 或 dict[strtuple[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

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

    ignore_groupby_dataframes

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

    include_groupby_columns

    在适用情况下,每个数据框中要包含为 groupby 的特定列列表。每个数据框中的所有其他列将被忽略 (dict[str -> list[str]])。

    ignore_groupby_columns

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

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

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

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

  • where_primitives (list[strPrimitiveBase], 可选) –

    要与 where 子句一起应用的原始名称(或类型)列表。

    默认值

    [“count”]

  • max_features (int, 可选) – 将生成的特征数量限制在此数字。如果为 -1,则无限制。

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

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

  • training_window (Timedeltastr, 可选) – 定义在计算特征时,截断时间之前可以使用多久数据的窗口。如果为 None ,则使用截断时间之前的所有数据。默认为 None。使用 Pandas Timedelta 时,月份和年份单位不是相对的。相对单位应作为 Featuretools Timedelta 或字符串传入。

  • approximate (Timedelta) – 对于计算成本较高的特征,用于对具有相似截断时间的实例进行分组的桶大小。例如,如果桶大小为 24 小时,则同一天具有截断时间的所有实例将对计算成本较高的特征使用相同的计算结果。

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

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

  • chunk_size (intfloatNone"cutoff time", 可选) – 每次计算的输出特征矩阵的行数。如果传入大于 0 的整数,将尝试每块使用这么多行。如果传入介于 0 和 1 之间的浮点值,则将块大小设置为所有实例的该百分比。如果传入字符串“cutoff time”,则按每个截断时间分割行。

  • dask_kwargs (dict, 可选) –

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

    cluster (str or dask.distributed.LocalCluster) 要发送任务到的集群或集群地址。如果未指定,将创建集群。

    diagnostics port (int) 用于 web 仪表板的端口号。如果未指定,web 界面将不会启用。

    诊断端口 (int)

    用于 Web 控制面板的端口号。如果未指定,Web 界面将不会启用。

    也将接受 LocalCluster 的有效关键字参数。

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

  • progress_callback (callable) –

    用于接收增量进度更新的回调函数。具有以下参数

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

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

返回值:

生成的特征定义列表和特征矩阵。如果 features_onlyTrue,则不会生成特征矩阵。

返回类型:

list[FeatureBase], pd.DataFrame

示例

from featuretools.primitives import Mean
# cutoff times per instance
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)