数据框架中客户类型及其属性的关联规则挖掘

2024-06-10 01:12:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找到用户取消酒店预订的规则。我的数据是这样的

df.head()
>>

hotel         is_canceled    lead_time  year    month     week
City Hotel    1              171        2016    August    36
Resort Hotel  l              29         2017    June      24
Resort Hotel  l              244        2015    September 36
City Hotel    1              183        2017    May       19
City Hotel    1              86         2016    January   5

共有32列/属性。我应该如何在这些数据上应用一些关联规则挖掘工具来发现哪些规则用户可以取消预订

我能行

records = []
for i in range(len(df)):
    records.append([cancel_df.columns[j]+'='+str(cancel_df.values[i,j]) for j in range(0,df.shape[1])])

要获取市场篮子类型的数据,它为我提供了

records[0]
>>
['hotel=Resort Hotel',
 'is_canceled=1',
 'lead_time=85',
 'year=2015',
 'month=July',
 'week=27',]

并且可以应用(虚拟解决方案)

from apyori import apriori
assosciation_rules=apriori(records,min_support=0.1)
assosciation_results=list(assosciation_rules)

有32列,有像Price这样的数字列,而且大部分是分类值。如果我应用Binning或一个热编码,它将生成数百个新列。如果我应用一些算法,比如Apriori,它会毁掉记忆

请提供更好的方法、算法和解决此类问题的方案


Tags: 数据用户citydftimeis规则year
2条回答

您所寻找的并不像频繁项集挖掘(使用apriori作为算法)那么简单,因为我猜您对具有大量取消预订的属性组合感兴趣。 一个可能有帮助的搜索词是子组发现。 它是对频繁项集挖掘任务的一种推广,适用于像您这样的问题


Disclamer:我是pysubgroup开发团队的一员

我建议在python中使用pysubgroup包进行子组发现。您应该能够根据您的场景从github页面调整示例。基本上用'is_canceled'替换'Survived',用BestFirstSearch替换BeamSearch,这样你就可以走了。只需确保从github而不是pypi;获取当前版本即可。)

相关问题 更多 >