我想找到用户取消酒店预订的规则。我的数据是这样的
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,它会毁掉记忆
请提供更好的方法、算法和解决此类问题的方案
您所寻找的并不像频繁项集挖掘(使用apriori作为算法)那么简单,因为我猜您对具有大量取消预订的属性组合感兴趣。 一个可能有帮助的搜索词是子组发现。 它是对频繁项集挖掘任务的一种推广,适用于像您这样的问题
Disclamer:我是pysubgroup开发团队的一员
我建议在python中使用pysubgroup包进行子组发现。您应该能够根据您的场景从github页面调整示例。基本上用
'is_canceled'
替换'Survived'
,用BestFirstSearch
替换BeamSearch
,这样你就可以走了。只需确保从github而不是pypi;获取当前版本即可。)相关问题 更多 >
编程相关推荐