根据客户类型及其在DataFrame中显示的属性进行关联规则挖掘

问题描述 投票:0回答:1

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

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或One Hot Encoding,它将生成数百个新列。如果我应用一些算法,例如Apriori,它会破坏内存。

请提供更好的方法,算法和用于解决此类问题的程序包

python machine-learning apriori
1个回答
0
投票

您正在寻找的东西并不像频繁的项目集挖掘那样简单(使用先验算法),因为我想您对具有大量已取消预订的属性组合感兴趣。可能有用的搜索词是“子组发现”。它是对频繁项集挖掘任务的概括,适用于您这样的问题。


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

[我建议使用pysubgroup包在python中进行子组发现。您应该能够从github页面上为您的方案调整示例。基本上将'Survived'替换为'is_canceled',将BeamSearch替换为BestFirstSearch,您应该一切顺利。只要确保您从github而不是pypi中获取当前版本即可;)

© www.soinside.com 2019 - 2024. All rights reserved.