资源简介
本压缩包为pycharm工程文件,其中movie文件夹内为movielens的数据集,100k条数据。代码为python3.6,注释详细。欢迎一起学习。
代码片段和文件信息
import os
import pandas as pd
from collections import defaultdict
from operator import itemgetter
import sys
data_folder = os.path.join(os.path.expanduser(“~“) “Data“ “movie“)
ratings_filename = os.path.join(data_folder “u.data“)
# 由于第一行就是数据部分,所以要手动添加表头,设置各列名称
all_ratings = pd.read_csv(ratings_filename delimiter=“\t“ header=None
names=[“UserID“ “MovieID“ “Rating“ “Datetime“])
print(all_ratings[:5])
# 创建新特征。如果评分大于3,就设定用户喜欢这部电影
all_ratings[“Favorable“] = all_ratings[“Rating“] > 3
print(all_ratings[10:15])
# 取前200个用户的打分数据
ratings = all_ratings[all_ratings[‘UserID‘].isin(range(200))]
favorable_ratings = ratings[ratings[“Favorable“]]
# 每个用户各喜欢哪些电影
favorable_reviews_by_users = dict((k frozenset(v.values)) for k v in favorable_ratings.groupby(“UserID“)[“MovieID“])
# 每部电影的喜欢的人数量
num_favorable_by_movie = ratings[[“MovieID“ “Favorable“]].groupby(“MovieID“).sum()
# 最受欢迎的五部电影
print(num_favorable_by_movie.sort_values(by=“Favorable“ ascending=False).head())
# 实现Apriori算法
# 频繁项集
frequent_itemsets = {}
# 称为频繁项集的最小支持度
min_support = 50
# 为每一部电影生成只包含它自己的项集,检测它是否频繁
frequent_itemsets[1] = dict((frozenset((movie_id)) row[“Favorable“])
for movie_id row in num_favorable_by_movie.iterrows()
if row[“Favorable“] > min_support)
print(“有 {} 部电影有至少{} 个好评“.format(len(frequent_itemsets[1]) min_support))
sys.stdout.flush()
# 接收新发现的频繁项集,创建超集,检测频繁程度
def find_frequent_itemsets(favorable_reviews_by_users k_1_itemsets min_support):
counts = defaultdict(int)
# 遍历所有用户和他们的打分数据
for user reviews in favorable_reviews_by_users.items():
# 遍历前面找出的项集,判断是否是当前评分项集的子集,如果是,说明用户已经为子集中的电影评分
for itemset in k_1_itemsets:
if itemset.issubset(reviews):
# 遍历用户打过分但是没有出现在项集里的电影,生成超集。更新该项集的计数。
for other_reviewed_movie in reviews - itemset:
current_superset = itemset | frozenset((other_reviewed_movie))
counts[current_superset] += 1
# 检测达到最小支持度的项集,看他频繁程度是否达到要求,返回频繁项集
return dict([(itemset frequency) for itemset frequency in counts.items() if frequency >= min_support])
# 运行Apriori算法
for k in range(2 20):
cur_frequent_itemsets = find_frequent_itemsets(favorable_reviews_by_users frequent_itemsets[k - 1]
min_support)
if len(cur_frequent_itemsets) == 0:
print(“没有找到长度为{}的频繁项集“.format(k))
sys.stdout.flush() # 确保代码还在运行时,把缓冲区内容输出到终端,保证即时输出
break
else:
print(“找到了{}个长度为{}的频繁项集“.format(len(cur_frequent_itemsets) k))
sys.stdout.flush()
frequent_itemsets[k] = cur_frequent_itemsets
# 删除长度为1的项集
del frequent_itemsets[1]
# 为每个项集生成规则: 如果用户喜欢前提中的所有电影,那么他们也会喜欢结论中的电影
candidate_rules = []
for itemset_length itemset_counts in frequent_itemsets.items():
for itemset in itemset_counts.keys():
# 遍历每一
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-11 15:54 movie_pro\
目录 0 2018-01-11 15:53 movie_pro\.idea\
目录 0 2018-01-11 10:32 movie_pro\.idea\libraries\
文件 128 2018-01-11 10:32 movie_pro\.idea\libraries\R_User_Library.xm
文件 185 2018-01-11 10:34 movie_pro\.idea\misc.xm
文件 270 2018-01-11 10:30 movie_pro\.idea\modules.xm
文件 700 2018-01-11 10:34 movie_pro\.idea\movie_pro.iml
文件 12020 2018-01-11 15:53 movie_pro\.idea\workspace.xm
目录 0 2018-01-11 15:54 movie_pro\movie\
文件 7729 2018-01-11 15:49 movie_pro\movie.py
文件 716 2000-07-20 05:09 movie_pro\movie\allbut.pl
文件 643 2000-07-20 05:09 movie_pro\movie\mku.sh
文件 6750 2016-01-30 04:26 movie_pro\movie\README
文件 1979173 2000-07-20 05:09 movie_pro\movie\u.data
文件 202 2000-07-20 05:09 movie_pro\movie\u.genre
文件 36 2000-07-20 05:09 movie_pro\movie\u.info
文件 236344 2000-07-20 05:09 movie_pro\movie\u.item
文件 193 2000-07-20 05:09 movie_pro\movie\u.occupation
文件 22628 2000-07-20 05:09 movie_pro\movie\u.user
文件 1586544 2001-03-09 02:33 movie_pro\movie\u1.ba
文件 392629 2001-03-09 02:32 movie_pro\movie\u1.test
文件 1583948 2001-03-09 02:33 movie_pro\movie\u2.ba
文件 395225 2001-03-09 02:33 movie_pro\movie\u2.test
文件 1582546 2001-03-09 02:33 movie_pro\movie\u3.ba
文件 396627 2001-03-09 02:33 movie_pro\movie\u3.test
文件 1581878 2001-03-09 02:33 movie_pro\movie\u4.ba
文件 397295 2001-03-09 02:33 movie_pro\movie\u4.test
文件 1581776 2001-03-09 02:34 movie_pro\movie\u5.ba
文件 397397 2001-03-09 02:33 movie_pro\movie\u5.test
文件 1792501 2001-03-09 02:34 movie_pro\movie\ua.ba
文件 186672 2001-03-09 02:34 movie_pro\movie\ua.test
............此处省略696个文件信息
相关资源
- Python数据挖掘入门与实践.zip code
- Python数据挖掘入门与实践(高清PDF+随
- 《Python数据挖掘入门与实践 》 作者:
- Python数据挖掘与分析经典资料汇总
- 从零开始学Python数据分析与挖掘高清
- k-means python编程外加课件
- Python数据分析与应用实验报告.docx
- iris.csv数据集和python代码
- Python数据挖掘入门与实战 -用NBA 2013—
- Python-农业知识图谱农业领域的命名实
- Python数据挖掘入门与实战-NBA 2013 —
- chapter7 data
- python_tweets.rar
- 详解python实现FP-TREE进行关联规则挖掘
- 西电数据挖掘作业——k中心聚类pyt
- 西电数据挖掘作业——关联规则apri
- 数据挖掘十大算法源代码Python)
- Kaggle5000部电影数据挖掘源码
- 数据挖掘教学视频实战超详细加pyth
- 四种聚类算法实现对控制图时间序列
- python数据挖掘分类聚类回归关联算法
- DataMiningProject-Bearing 用于轴承大数据的
- Kaggle 5000部电影数据csv表格
- 数据挖掘基础之聚类算法
- KNN算法的Python实现(datingrecd.ipynb)
- python数据挖掘入门与实战配套代码
- 数据挖掘 Apriori算法 python版
- 关联规则挖掘之FP-growth算法实现
- 数据挖掘大作业基站.zip
- 西电数据挖掘作业——网页聚类算法
评论
共有 条评论