iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
AI & Data

AI ninja project系列 第 9

AI ninja project [day 9] 先驗演算法

  • 分享至 

  • xImage
  •  

除了在機器學習與深度學習的演算法,
其實還有一些演算法,可以幫忙做資料整理,
或是進行推導,尋找關聯性,
像是這篇介紹的Apriori Algorithm。

也有些演算法像是基因演算法,能用來解決困難的數學問題,
,持續優化尋找更佳的解來解方程式。

那這裡使用mlxtend這個套件,進行安裝:

pip install mlxtend

接著可以看官網的範例:
http://rasbt.github.io/mlxtend/user_guide/frequent_patterns/apriori/

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder

dataset = [['Milk', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],
           ['Dill', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],
           ['Milk', 'Apple', 'Kidney Beans', 'Eggs'],
           ['Milk', 'Unicorn', 'Corn', 'Kidney Beans', 'Yogurt'],
           ['Corn', 'Onion', 'Onion', 'Kidney Beans', 'Ice cream', 'Eggs']]


te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)

df = pd.DataFrame(te_ary, columns=te.columns_)

print(df)

dataset為顧客的購買資料,有客人可能買了五樣商品,有人買了七樣。

https://ithelp.ithome.com.tw/upload/images/20210909/20122678lxE2fKxsp4.png

將資料格式使用TransactionEncoder轉換成布林值的one_hot_encoder。

from mlxtend.frequent_patterns import apriori

result = apriori(df, use_colnames=True)
print(result)

https://ithelp.ithome.com.tw/upload/images/20210909/20122678xd9JFu0cky.png

可以發現Eggs、 Kidney Beans,這兩個商品的關聯度是最大的,
可以考慮是否將兩個商品排近一點或是一起買的話祭出優惠。

值得注意的是apriori()這個function能設定最低支持度(min_support)這個參數,都不設定的話,
預設值為0.5。調太高的話,門檻越嚴格,回傳項目越少。

那我們也可以進一步將詳細的關聯規則,進一步印出。

from mlxtend.frequent_patterns import association_rules

return_association_rule =  association_rules(result, metric="confidence", min_threshold=0.7)
print(return_association_rule)

上一篇
AI ninja project [day 8] 文字轉語音
下一篇
AI ninja project [day 10] 基因演算法
系列文
AI ninja project30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言