【机器学习-样例】关联规则和频繁样式探勘

一、关联规则

通过电影观看记录来找到关联的电影以便推荐
1.电影表

import pandas as pd
df_movie=pd.read_csv('E:/Jupyter workspace/python_for_data_science/Data/movies.csv')
df_movie.head()

在这里插入图片描述构建字典,便于查询

#电影编号-电影名 字典
movie_dic = {}
for rec in df_movie.iterrows():
    movie_dic[rec[1].movieId]  = rec[1].title
    
#movie_dic=df_movie.set_index('movieId')['title'].to_dict()

2.观影记录表

df = pd.read_csv('E:/Jupyter workspace/python_for_data_science/Data/ratings.csv')
df.head()

在这里插入图片描述只选取2012年之后的记录

df = df[df['timestamp'] >= 1325376000]

3.根据个人分组,将所看的电影形成对应列表,形成序列,转为列表

use_movie=df.groupby('userId')['movieId'].apply(list)#按照userId,取每个人
use_movie

在这里插入图片描述Series转列表

transactions=use_movie.values.tolist()
#transactions=[ele for ele in use_movie]

4.使用Apriori算法

from apyori import apriori
rules=apriori(transactions,min_support=0.2,min_confidence=0.5,min_lift=3,min_length=2)#设置参数,建立关联规则

5.列表化规则,从规则中取出内容

results=list(rules)#列表化

for rec in results:
    #print([item for item in rec.items])
    print([movie_dic.get(item) for item in rec.items])

在这里插入图片描述

二、频繁样式勘探

from pymining import itemmining

#设置参数
fp_input=itemmining.get_fptree(transactions)
report =itemmining.fpgrowth(fp_input,min_support=30,pruning=True)

#取出内容
for ele in report:
    if len(ele)>=6:
        #print([item for item in rec.items])
        print([movie_dic.get(item) for item in ele])

在这里插入图片描述

三、购物篮案例

import pandas as pd
df=pd.read_csv('E:/Jupyter workspace/python_for_data_science/Data/Market_Basket.csv',header=None)
df.head()

在这里插入图片描述设置参数,创建规则

trans=[r.values.tolist() for i,r in df.astype('str').iterrows()]#转换成列表

from apyori import apriori
rules=apriori(trans,min_support=0.003,min_confidence=0.2,min_lift=3,min_length=2)#设置参数,建立关联规则
results=list(rules)#列表化

打印规则明细

for rec in results:
    left_hands = rec.ordered_statistics[0].items_base
    right_hands = rec.ordered_statistics[0].items_add
    l = ';'.join([item for item in left_hands])
    r = ';'.join([item for item in right_hands])
    print('{} => {}'.format(l,r))

在这里插入图片描述
两两枚举

itemsets=[]
for rec in results:
    for ele in itertools.combinations(rec.items,2):
        itemsets.append(ele)
df2=pd.DataFrame(itemsets)
df2.columns=['Source','Target']
df2['Type']='undirected'
df2.to_csv('G:\\temp files\\trans.csv')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值