電影演員中的關聯關係
阿新 • • 發佈:2020-10-13
需求分析:對徐崢有關的電影進行分析,得到演員的頻繁項集和關聯關係。
資料來源:前一篇爬蟲在豆瓣爬取的資料。
完整程式碼:
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)
執行結果展示:
頻繁項集: 關聯規則:
今天也是元氣滿滿的一天。