如何在Featuretools中实现加权和变换基元?

2024-01-14

我试图弄清楚如何为Featuretools 实现加权总和原语。权重应取决于 time_since_last 就像

cum_sum (金额) = sum_{i} exp( -a_{i} ) * amount_{i}

where i正在滚动 6 个月期......


在上面你可以找到原来的问题。经过一段时间的尝试和错误后,我出于我的目的想出了这段代码:

使用实体和关系的数据和初始设置here https://github.com/WillKoehrsen/automated-feature-engineering/blob/master/walk_through/Automated_Feature_Engineering.ipynb

    def weight_time_until(array, time):
        diff = pd.DatetimeIndex(array) - time
        s = np.floor(diff.days/365/0.5)
        aWidth = 9
        a = math.log(0.1) / ( -(aWidth -1) )

        w = np.exp(-a*s) 

        return w

    WeightTimeUntil = make_trans_primitive(function=weight_time_until,
                                     input_types=[Datetime],
                                     return_type=Numeric,
                                     uses_calc_time=True,
                                     description="Calc weight using time until the cutoff time",
                                     name="weight_time_until")


features, feature_names = ft.dfs(entityset = es, target_entity = 'clients', 
                                 agg_primitives = ['sum'],
                                 trans_primitives = [WeightTimeUntil, MultiplyNumeric]) 

当我执行上述操作时,我已经接近了我想要的功能,但最终我没有得到正确的结果,我不明白。所以我得到了功能

SUM(贷款.WEIGHT_TIME_UNTIL(贷款开始))

but not

SUM(贷款.贷款金额 * 贷款.WEIGHT_TIME_UNTIL(贷款开始))

我在这里错过了什么???


我进一步尝试了......

我的猜测是类型不匹配!但“类型”是相同的。无论如何,我尝试了以下方法:

1) es["贷款"].convert_variable_type("贷款金额",ft.variable_types.Numeric) 2) 贷款["贷款金额_"] = 贷款["贷款金额"]*1.0

对于(1)以及(2),我得到了更有希望的结果特征:

贷款金额_ * WEIGHT_TIME_UNTIL(贷款开始)

and also

贷款金额 * WEIGHT_TIME_UNTIL(贷款开始)

但只有当我的目标价值=贷款而不是客户时,这实际上不是我的意图。


该原语当前不存在。但是,您可以创建自己的自定义基元来完成此计算。

下面是计算滚动总和的示例,可以使用适当的 pandas 或 python 方法对其进行更新以进行加权总和

from featuretools.primitives import TransformPrimitive
from featuretools.variable_types import Numeric

class RollingSum(TransformPrimitive):
    """Calculates the rolling sum.

    Description:
        Given a list of values, return the rolling sum.
    """

    name = "rolling_sum"
    input_types = [Numeric]
    return_type = Numeric
    uses_full_entity = True

    def __init__(self, window=1, min_periods=None):
        self.window = window
        self.min_periods = min_periods

    def get_function(self):
        def rolling_sum(values):
            """method is passed a pandas series"""
            return values.rolling(window=self.window, min_periods=self.min_periods).sum()

        return rolling_sum
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Featuretools中实现加权和变换基元? 的相关文章

随机推荐

  • Flutter:我可以将参数传递给按钮上 onPress 事件中定义的函数吗?

    我有一个简单的表单 带有一个用于计算表单的按钮 我认为最好点击按钮开始计算操作并将变量传递给哑函数 而不是让函数知道它不需要知道的文本字段 我可以这样做吗 或者我的计算函数是否需要访问我的文本字段 new Container color C
  • 使用 JavaScript 滚动时响应式动画页面元素 [编辑:视差滚动]

    我确信这个问题过去曾被提起过 然而我对一个术语不知所措 On this web page https squareup com careers creative对于 square 用户滚动浏览标题为 在 Square 不同学科协作设计精美简
  • ImageFont.textsize()返回值的单位是什么?

    我正在尝试使用 PIL 来预先计算给定文本行在给定字体和大小下所采用的大小 PIL 似乎或多或少是唯一可行的解 决方案 我不确定返回值的单位是什么font textsize The doc http effbot org imagingbo
  • 在绘图和小平面条之间移动轴标签

    我试图将小面条移动到图的最左侧 以便标签位于条形旁边 分组条位于其左侧 请参见下面的示例 我认为这必须通过 Grob 来完成 但我对这种级别的操作缺乏经验 并且希望得到指导 Data structure list dept structur
  • 如何在存储过程中迭代记录集?

    我需要从存储过程迭代记录集 并使用每个字段作为参数执行另一个存储过程 我无法在代码中完成此迭代 我在互联网上找到了示例 但它们似乎都涉及计数器 我不确定我的问题是否涉及计数器 我需要相当于 T SQL 的foreach 目前 我的第一个存储
  • 如何使用多行字符串示例比较 Cucumber 步骤中的 xml 输出?

    Chargify 在他们的项目中有这个 Cucumber 场景docs http docs chargify com api customers api usage xml customers read Scenario Retrieve
  • 想要在按我的应用程序的启动器图标后返回到上一个活动

    假设我有一个活动 A 启动活动 B 并自行终止 现在 我按下主页按钮 或以其他方式离开应用程序 导致活动 B 的 onPause gt onStop 然后再次单击启动器中的应用程序图标 所发生的情况是 活动 A 再次启动 当然是因为我在清单
  • 使用 C# 替换本机 .exe 中的字符串

    如何捕获本机 Windows exe 文件中的所有字符串 并稍后使用 C 将它们替换为其他字符串 背景 我想创建一个 C 工具来从简单的 exe 文件中提取和替换字符串 这有可能吗 您需要启动一个 PE COFF 解析器 如果你的字符串存储
  • 使用sql从多个字段中选择不同的字段

    我有 5 列对应于问答游戏数据库中的答案 对 错 1 错 2 错 3 错 4 我想返回所有可能的答案而不重复 我希望在不使用临时表的情况下完成此任务 是否可以使用类似的东西 select c1 c2 count from t group b
  • 受保护的成员/字段真的那么糟糕吗?

    现在 如果您阅读 MSDN 中 C 的命名约定 您会注意到它指出属性始终优先于公共字段和受保护字段 有些人甚至告诉我 你永远不应该使用公共或受保护的领域 现在我同意我还没有找到需要拥有公共领域的理由 但受保护的领域真的那么糟糕吗 如果您需要
  • 原始变量和引用变量的内存分配[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions type name 对于引用类型 这
  • Java:返回 java.util.Date 格式的字符串[重复]

    这个问题在这里已经有答案了 我将以 201201 格式接收输入 即 YYYYMM 格式 现在我想按原样返回值 201201 但它应该采用 java util Date 格式 我很困惑 String strDate 201201 Simple
  • Hadoop 溢出故障

    我目前正在开发一个使用 Hadoop 0 21 0 985326 以及一个由 6 个工作节点和一个头节点组成的集群的项目 提交常规 MapReduce 作业失败 但我不知道为什么 以前有人见过这个异常吗 org apache hadoop
  • MS-SQL 查询 - 更新通过存储过程检索的记录

    UPDATE 现在范围已经稍微扩大了 我现在需要检索字段 Id uri linkTo 这如何改变事情 我正在使用 MS SQL 2005 数据库并具有以下存储过程 CREATE PROCEDURE dbo getNewAds region
  • 将数据发送到单独的窗口 javascript

    我使用以下命令从现有页面创建了一个新的弹出窗口 window open myUrl myName width 200 height 200 现在 在该弹出窗口上 我有一个文本输入和一个按钮 我想为按钮创建一个 onclick 方法 将文本输
  • 三星 G5 setvisibility 出现空指针异常

    Android 应用代码可在各种设备上成功运行 包括早至 API 14 至 API 19 目标 但是 Samsung G5 v4 4 4 在尝试为活动设置 Visibilty true 时会抛出 NPE 此错误可能仅在最近通过 Sprint
  • 编组通知包

    我正在尝试将通知对象写入文件 我能找到的最好方法是将对象写入包 编组该包以获取字节 然后将其写入文件 Parcel notif Parcel obtain notification writeToParcel notif 0 byte no
  • 当 Go 返回多个值时到底发生了什么

    Go 函数和方法可以返回多个值 func learnMultiple x y int sum prod int return x y x y return two values 总和 产品 learnMultiple 10 50 是不是和返
  • 是否可以更改 Java ME 中的垃圾收集行为?

    我想知道是否可以调整垃圾收集器在 JavaMe 上的工作方式 以某种方式提高性能 可能会减少段落数量 我看过一些关于它的文章 但大多是针对 Java SE 的 其中大多数都说 GC 高度依赖于制造商 那会是多少呢 垃圾收集器何时被触发在很大
  • 如何在Featuretools中实现加权和变换基元?

    我试图弄清楚如何为Featuretools 实现加权总和原语 权重应取决于 time since last 就像 cum sum 金额 sum i exp a i amount i where i正在滚动 6 个月期 在上面你可以找到原来的