首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >calibration_and_holdout_data: AttributeError:'int‘对象没有属性'n’

calibration_and_holdout_data: AttributeError:'int‘对象没有属性'n’
EN

Stack Overflow用户
提问于 2019-04-11 17:31:21
回答 1查看 450关注 0票数 2

我正在尝试使用libary库运行BG/NBD模型。我所有的分析都是基于下面的例子,但使用的是我自己的数据:https://towardsdatascience.com/whats-a-customer-worth-8daf183f8a4f

不知何故,我收到了以下错误,在阅读了50+ stackoverflow文章但没有找到任何答案后,我想问自己一个问题:我做错了什么?:(

提前感谢!:)

我尝试更改属于我的数据框架的所有列的类型,而不做任何更改。

代码语言:javascript
复制
df2 = df

df2.head()

person_id   effective_date  accounting_sales_total
0   219333  2018-08-04  1049.89
1   333219  2018-12-21  4738.97
2   344405  2018-07-16  253.99
3   455599  2017-07-14  2199.96
4   766665  2017-08-15  1245.00
代码语言:javascript
复制
from lifetimes.utils import calibration_and_holdout_data

summary_cal_holdout = calibration_and_holdout_data(df2, 'person_id', 'effective_date',
                                        calibration_period_end='2017-12-31',
                                        observation_period_end='2018-12-31')

print(summary_cal_holdout.head())
代码语言:javascript
复制
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-85-cdcb400098dc> in <module>()
      7 summary_cal_holdout = calibration_and_holdout_data(df2, 'person_id', 'effective_date',
      8                                         calibration_period_end='2017-12-31',
----> 9                                         observation_period_end='2018-12-31')
     10 
     11 print(summary_cal_holdout.head())

/usr/local/envs/py3env/lib/python3.5/site-packages/lifetimes/utils.py in calibration_and_holdout_data(transactions, customer_id_col, datetime_col, calibration_period_end, observation_period_end, freq, datetime_format, monetary_value_col)
    122     combined_data.fillna(0, inplace=True)
    123 
--> 124     delta_time = (to_period(observation_period_end) - to_period(calibration_period_end)).n
    125     combined_data["duration_holdout"] = delta_time
    126 

AttributeError: 'int' object has no attribute 'n'
EN

回答 1

Stack Overflow用户

发布于 2019-07-26 17:54:41

这实际上运行得很好:)

代码语言:javascript
复制
data = {'person_id':[219333, 333219, 344405, 455599, 766665], 
           'effective_date':['2018-08-04', '2018-12-21', '2018-07-16', '2017-07-14', '2017-08-15'],
           'accounting_sales_total':[1049.89, 4738.97, 253.99, 2199.96, 1245.00]} 
df2 = pd.DataFrame(data)


from lifetimes.utils import calibration_and_holdout_data

summary_cal_holdout = calibration_and_holdout_data(df2, 'person_id', 'effective_date',
                                        calibration_period_end='2017-12-31',
                                        observation_period_end='2018-12-31')
print(summary_cal_holdout.head())

返回:

代码语言:javascript
复制
           frequency_cal  recency_cal  T_cal  frequency_holdout  \
person_id                                                         
455599               0.0          0.0  170.0                0.0   
766665               0.0          0.0  138.0                0.0   

           duration_holdout  
person_id                    
455599                  365  
766665                  365  

这意味着您的问题可能与包版本控制有关,请尝试:

代码语言:javascript
复制
pip install lifetimes --upgrade
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55629181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档