關(guān)聯(lián)規(guī)則(二)

參考:
數(shù)據(jù)挖掘入門系列教程(五)之Apriori算法Python實現(xiàn)
Python 極簡關(guān)聯(lián)分析(購物籃分析)

#!/usr/bin/python
# coding=utf-8
import numpy as np
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 畫圖支持中文顯示
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 負號
plt.rcParams['axes.unicode_minus'] = False

# 顯示所有列
pd.set_option('display.max_columns', None)
# 顯示所有行
pd.set_option('display.max_rows', None)
# 設(shè)置value的顯示長度為10000伏尼,默認(rèn)為50
pd.set_option('display.width',10000)
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
#
np.set_printoptions(linewidth=1000)

df = pd.read_excel('G:\\rnn\\relationship analysis\Online Retail.xlsx')
print(df.head())
'''
發(fā)票編號:發(fā)票編號馁痴。標(biāo)稱,唯一分配給每個交易的6位整數(shù)披摄。如果此代碼以字母“ c”開頭提陶,則表示已取消钥飞。
StockCode:產(chǎn)品(項目)代碼。標(biāo)稱简肴,唯一地分配給每個不同產(chǎn)品的5位整數(shù)。
描述:產(chǎn)品(項目)名稱榨咐。名義上
數(shù)量:每筆交易中每個產(chǎn)品(項目)的數(shù)量诺祸。數(shù)字。
InvoiceDate:通知日期和時間祭芦。數(shù)字筷笨,每筆交易生成的日期和時間。
單價:單價龟劲。數(shù)值胃夏,單位為英鎊的產(chǎn)品價格。
客戶編號:客戶編號昌跌。標(biāo)稱仰禀,唯一分配給每個客戶的5位整數(shù)。
國家:國家名稱蚕愤。名義上答恶,每個客戶居住的國家的名稱。
'''

df['Description'] = df['Description'].str.strip() # Description字段去除首尾空格
df.dropna(axis=0, subset=['InvoiceNo'], inplace=True) # 刪除發(fā)票ID"InvoiceNo"為空的數(shù)據(jù)記錄
df['InvoiceNo'] = df['InvoiceNo'].astype('str')
df = df[~df['InvoiceNo'].str.contains('C')] # 刪除發(fā)票ID"InvoiceNo"不包含“C”的記錄

# 數(shù)據(jù)預(yù)處理——處理為購物籃數(shù)據(jù)集
# 方法一:使用pivot_table函數(shù)
basket = df[df['Country'] =="France"].pivot_table(columns = "Description",index="InvoiceNo", values="Quantity",aggfunc=np.sum).fillna(0)
print(basket.head(3))
# 方法二:groupby后unstack
basket2 = (df[df['Country'] =="Germany"]
           .groupby(['InvoiceNo', 'Description'])['Quantity']
           .sum().unstack().reset_index().fillna(0)
           .set_index('InvoiceNo'))
# basket選擇法國地區(qū)數(shù)據(jù)萍诱,basket2為德國地區(qū)數(shù)據(jù)悬嗓,記得fillna(0),將空值轉(zhuǎn)為0裕坊,算法包需要包竹。

# 將購物數(shù)量轉(zhuǎn)為0/1變量
# 0:此訂單未購買包含列名
# 1:此訂單購買了列名商品
def encode_units(x):
    if x <= 0:
        return 0
    if x >= 1:
        return 1

basket_sets = basket.applymap(encode_units)
basket_sets.drop('POSTAGE', inplace=True, axis=1) # 刪除購物籃中的郵費項(POSTAGE)

# 進行關(guān)聯(lián)規(guī)則運算
frequent_itemsets = apriori(basket_sets, min_support=0.05, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
print('frequent_itemsets 為頻繁項集:(Support列為支持度,即 項集發(fā)生頻率/總訂單量)\n', frequent_itemsets)
print('rules為最終關(guān)聯(lián)規(guī)則結(jié)果表:(antecedants前項集籍凝,consequents后項集周瞎,support支持度,confidence置信度饵蒂,lift提升度声诸。)\n', rules)

print('==================================================================================================')

# 結(jié)果檢視
# 選取(置信度confidence≥0.8)&(提升度lift≥6)的規(guī)則退盯,按lift降序排序
head_rules = rules[ (rules['lift'] >= 6) & (rules['confidence'] >= 0.8) ].sort_values("lift",ascending = False)
print(head_rules)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彼乌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子得问,更是在濱河造成了極大的恐慌囤攀,老刑警劉巖软免,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宫纬,死亡現(xiàn)場離奇詭異,居然都是意外死亡膏萧,警方通過查閱死者的電腦和手機漓骚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門蝌衔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蝌蹂,你說我怎么就攤上這事噩斟。” “怎么了孤个?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵剃允,是天一觀的道長。 經(jīng)常有香客問我齐鲤,道長斥废,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任给郊,我火速辦了婚禮牡肉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淆九。我一直安慰自己统锤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布炭庙。 她就那樣靜靜地躺著饲窿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪焕蹄。 梳的紋絲不亂的頭發(fā)上免绿,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機與錄音擦盾,去河邊找鬼嘲驾。 笑死,一個胖子當(dāng)著我的面吹牛迹卢,可吹牛的內(nèi)容都是我干的辽故。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼腐碱,長吁一口氣:“原來是場噩夢啊……” “哼誊垢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起症见,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤喂走,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谋作,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芋肠,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年遵蚜,在試婚紗的時候發(fā)現(xiàn)自己被綠了帖池。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奈惑。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖睡汹,靈堂內(nèi)的尸體忽然破棺而出肴甸,到底是詐尸還是另有隱情,我是刑警寧澤囚巴,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布原在,位于F島的核電站,受9級特大地震影響彤叉,放射性物質(zhì)發(fā)生泄漏晤斩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一姆坚、第九天 我趴在偏房一處隱蔽的房頂上張望澳泵。 院中可真熱鬧,春花似錦兼呵、人聲如沸兔辅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽维苔。三九已至,卻和暖如春懂昂,著一層夾襖步出監(jiān)牢的瞬間介时,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工凌彬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沸柔,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓铲敛,卻偏偏與公主長得像褐澎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伐蒋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348