1. 程式人生 > 實用技巧 >電影演員中的關聯關係

電影演員中的關聯關係

需求分析:對徐崢有關的電影進行分析,得到演員的頻繁項集和關聯關係。

資料來源:前一篇爬蟲在豆瓣爬取的資料。

完整程式碼:

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)

執行結果展示:

頻繁項集: 關聯規則:

今天也是元氣滿滿的一天。