电影演员中的关联关系

需求分析:对徐峥有关的电影进行分析,得到演员的频繁项集和关联关系。

数据源:前一篇爬虫在豆瓣爬取的数据。

完整代码:

import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

# 数据加载
movies = pd.read_csv('./movie_actors.csv')
print('=======================================')
print(movies)
# print(movies.head())
# 使用get_dummies 将actors进行one-hot编码(离散特征有多少取值(就是整个数据集中有多少个不同的演员),就用多少维来表示这个特征)
movies_hot_encoded = movies.drop('actors', 1).join(movies.actors.str.get_dummies('/'))
print('=======================================')
print(movies_hot_encoded)

pd.options.display.max_columns = 100

# print(movies_hot_encoded.head())

# 将movieId, title设置为index
movies_hot_encoded.set_index(['title'], inplace=True)
print('=======================================')
print(movies_hot_encoded.head())
# 挖掘频繁项集,最小支持度为0.05
itemsets = apriori(movies_hot_encoded, use_colnames=True, min_support=0.05)
# 按照支持度从大到小进行输出
itemsets = itemsets.sort_values(by="support", ascending=False)
print('-' * 20, '频繁项集', '-' * 20)
print(itemsets)

print('-' * 20, '关联规则', '-' * 20)
# 根据频繁项集计算关联规则,设置最小提升度为2
rules = association_rules(itemsets, metric='lift', min_threshold=2)
# 按照提升度从大到小进行排序
rules = rules.sort_values(by="lift", ascending=False)
# rules.to_csv('./rules.csv', index=False, encoding='utf_8_sig')
print(rules)

运行结果展示:

频繁项集:                                                                                                                关联规则:

     

今天也是元气满满的一天。

 

posted @ 2020-10-13 11:39  mingke07  阅读(384)  评论(0)    收藏  举报