我想找到用户取消酒店预订的规则。我的数据看起来像这样
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,它会破坏内存。
请提供更好的方法,算法和用于解决此类问题的程序包
您正在寻找的东西并不像频繁的项目集挖掘那样简单(使用先验算法),因为我想您对具有大量已取消预订的属性组合感兴趣。可能有用的搜索词是“子组发现”。它是对频繁项集挖掘任务的概括,适用于您这样的问题。
Disclamer:我是pysubgroup开发团队的一员
[我建议使用pysubgroup包在python中进行子组发现。您应该能够从github页面上为您的方案调整示例。基本上将'Survived'
替换为'is_canceled'
,将BeamSearch
替换为BestFirstSearch
,您应该一切顺利。只要确保您从github而不是pypi中获取当前版本即可;)