給出《Python資料分析與挖掘實戰大資料技術叢書》Aprior演算法另一種寫法
背景
關聯規則應用,一般是為了尋求:已知某些項在一定概率下推匯出另一項,這樣的組合。
當然在資料量比較小的時候,這樣的問題可以窮盡的,但是在資料量比較大時,搜尋將成為瓶頸。
Aprior演算法提出頻繁項的子集必須都是頻繁,據此設計程式將減少搜尋次數。
在看《Python資料分析與挖掘實戰大資料技術叢書.pdf》,裡面實現的Aprior演算法有點煩瑣,而且未實現剪下步,有提升空間。
按自己的思路重寫了一遍,耗時90ms——>70ms,效率提高22%。
程式碼
import pandas as pd
import itertools
def find_rule2(d, support, confidence) :
"""
關聯規則:Aprior演算法
輸入:
d: 資料樣本,pd.DataFrame
示例:(3條資料)
a b c d e
0 1 0 1 0 1
1 0 1 0 1 0
2 0 1 1 0 0
support:支援度閾值,0.2 表示 20%
confidence:置信度閾值,0.3 表示 30%
含 連線步、剪下步
"""
result = dict() #定義輸出結果
# 最小支援度個數
lend = len(d)
support_num = support*lend
support_series = d.sum() #支援度序列
L1 = {(k,):v for k,v in support_series[support_series>=support_num].items()} #L1頻繁項集
# 計算支援度數目
def getsupport(v):
return np.sum(d.loc[:,v].sum(axis= 1)==len(v))
LL_all = []
LLn = L1
k = 0
while len(LLn)>1:
k += 1
print("開始第%d輪搜尋……"%k)
print("數目:%d"%len(LLn))
LL_all.append(LLn)
# 連線步:
df = pd.DataFrame([dict.fromkeys(key,1) for key in LLn.keys()],index=LLn.keys()).fillna(0)
LL = {}
for itemsets in itertools.combinations(df.columns[df.sum()>=k],k+1):
# 剪下步:可以在這裡對itemsets的每一個子集是否在頻繁項進行過濾減少查詢頻率
if np.sum(df.ix[:,itemsets].sum(axis=1)==k) != k+1:
continue
snum = getsupport(itemsets)
if snum >= support_num:
LL[itemsets] = snum
# 產生關聯規則
for i in range(1,k+1):
for cs in itertools.combinations(itemsets,i):
# 置信度 P(B|A) = P(AB)/P(A)
cf = snum/LL_all[i-1][cs]
if cf>=confidence:
name = "".join(["--".join(cs),"->","--".join(set(itemsets).difference(cs))])
result[name] = (snum/lend,cf)
LLn = LL
return pd.DataFrame(result).T.rename(columns = {0:"support",1:"confidence"}).sort_values(by=["support","confidence"])
相關推薦
給出《Python資料分析與挖掘實戰大資料技術叢書》Aprior演算法另一種寫法
背景 關聯規則應用,一般是為了尋求:已知某些項在一定概率下推匯出另一項,這樣的組合。 當然在資料量比較小的時候,這樣的問題可以窮盡的,但是在資料量比較大時,搜尋將成為瓶頸。 Aprior演算法提出頻繁項
菜鷄日記——《Python資料分析與挖掘實戰》實驗6-1 拉格朗日插值法
實驗6-1 用拉格朗日插值法 題目描述:用拉格朗日插值法對missing_data.xls中表格的空值進行填補。 # p1, lab6 # Fill all of the null values with Lagrange's interpolation # Data file name i
Python資料分析與挖掘實戰 pdf下載
Python資料分析與挖掘實戰是10餘位資料探勘領域資深專家和科研人員,10餘年大資料探勘諮詢與實施經驗結晶。從資料探勘的應用出發,以電力、航空、醫療、網際網路、生產製造以及公共服務等行業真實案例為主線,深入淺出介紹Python資料探勘建模過程,實踐性極強。 本書共15章,分兩個部分:基礎
推薦書籍《Python資料分析與挖掘實戰》附下載連結
“10餘位資料探勘領域資深專家和科研人員,10餘年大資料探勘諮詢與實施經驗結晶。從資料探勘的應用出發,以電力、航空、醫療、網際網路、生產製造以及公共服務等行業真實案例為主線,深入淺出介紹Python資料探勘建模過程,實踐性極強。 本書共15章,分兩個部分:基礎
《Python資料分析與挖掘實戰》筆記(一):資料探勘基礎
一、資料探勘的基本任務 利用分類與預測、聚類分析、關聯規則、時序模式、偏差檢測、智慧推薦等方法,幫助企業提取資料中蘊含的商業價值,提升企業的競爭力。 二、資料探勘建模過程 定義挖掘目標:任務目標和完
Python資料分析與挖掘實戰—挖掘建模
常用的分類與預測演算法 1迴歸模型分類 1線性迴歸---自變數因變數線性關係,最小二乘法求解 2非線性迴歸--自變數因變數非線性關係,函式變換為線性關係,或非線性最小二乘方法求解 3logistic迴
Python資料分析與挖掘實戰(Pandas,Matplotlib常用方法)
作業系統:Windows Python:3.5 歡迎加入學習交流QQ群:657341423 上節講到資料分析和挖掘需要的庫,其中最主要的是Pandas,Matplotlib。 Pandas:主要是對資料分析,計算和統計,如求平均值,方差等。 Matplotl
Python資料分析與挖掘實戰程式碼糾錯 程式碼3-1
我是通過這本書來開始學習資料探勘和分析,在目前學的內容中,發現了書上的程式碼有些地方是錯誤了,在此希望分享下我除錯好的程式碼,供大家參考,相互學習。 1、程式碼清單3-1 餐飲銷額資料異常值檢測程式碼 書上的程式碼如下: #-*- coding: utf-
《Python資料分析與挖掘實戰》第7章——kmeans
本文是基於《Python資料分析與挖掘實戰》的實戰部分的第七章的資料——《航空公司客戶價值分析》做的分析。旨在補充原文中的細節程式碼,並給出文中涉及到的內容的完整程式碼。 1)在資料預處理部分增加了屬性規約、資料變換的程式碼2)在模型構建的部分增加了一個畫出雷達圖的函式程式碼
python資料分析與挖掘實戰 第六章 拓展思考
企業偷漏稅識別模型 1、資料探索 偷漏稅企業分佈 首先生成data import pandas as pd inputfile = r'E:\Download\百度雲\圖書配套資料、程式碼\chapter6\拓展思考\tax.xls' data =
《Python資料分析與挖掘實戰》第13章——迴歸+DNN
本文是基於《Python資料分析與挖掘實戰》的實戰部分的第13章的資料——《財政收入影響因素分析及預測模型》做的分析。旨在補充原文中的細節程式碼,並給出文中涉及到的內容的完整程式碼。在作者所給程式碼的基礎上增加的內容包括: 1)探索了灰色預測的原理 2)畫出預測結果圖3)由於
《Python資料分析與挖掘實戰》第15章——文字挖掘
本文是基於《Python資料分析與挖掘實戰》的實戰部分的第15章的資料——《電商產品評論資料情感分析》做的分析。旨在回顧對評論文字資料的處理和建模方法。1 挖掘背景與目標 對京東平臺上的熱水器評論進行文字挖掘分析,挖掘建模如下:1)分析某一個品牌熱水器的使用者情感傾向2
『Python資料分析與挖掘實戰』第五章:挖掘建模
# coding:utf-8 """ logistic 迴歸, 自動建模 """ import pandas as pd # 引數初始化 filename = r"C:\learning\DataMining\Book\Python_DataMining\Data\cha
Python資料分析與挖掘實戰學習筆記(一)
資料預處理1. 資料清洗(1)缺失值處理三種方法:刪除記錄、資料插補、不處理常見插補方法:均值/中位數/眾數插補、使用固定值/期望值、迴歸方法(根據已有資料和其他與其有關變數等建立擬合模型來預測)、插值法(利用已知點建立合適的插值函式,如拉格朗日函式)我們以餐廳銷量資
python資料分析與挖掘實戰 第九章 拓展練習
這一章的拓展練習感覺是比較簡單的。基本上沒有太多讓人糾結的地方。沒有特徵提取和資料規約,讓事情簡單了不少。當然不包括寫出C4.5的決策樹,我也沒有那麼寫。 讀取資料,劃分訓練集和測試集,不用多說。
python資料分析與挖掘實戰 第七章 拓展思考
流失客戶分類模型 1 資料預處理 如果動手做過的人可能面臨的第一個問題就是,這資料讀進pandas怎麼弄編碼結果都是錯的。如果你存在這樣的問題,那麼我建議你使用NotePad++載入檔案以後,改成無BOM的UTF-8編碼,然後就可以正常讀取了。 資料預處理部
《Python資料分析與挖掘實戰》筆記(五):資料建模
分類與預測 主要分類與預測演算法 迴歸分析 確定預測值與其他變數關係。線性、非線性、Logistic、嶺迴歸、主成分迴歸等 決策樹 自頂向下分類 人工神經網路 用神經網路表示輸入與輸出之間的關係 貝葉斯網路 又稱信度網路,是不確定知識表達和推理領域最有效的理論模
python資料分析與挖掘實戰筆記二:第99頁神經網路訓練出現的錯誤'Some keys in session_kwargs are not supported at this time: %s'
在使用神經網路模型預測銷量高低時,系統指出模型訓練時出現錯誤: ValueError Traceback (most recent call last) <ipython-input-20-e46e29b76a5e> in <module&g
《Python資料分析與挖掘實戰》第10章(上)——DNN
本文是基於《Python資料分析與挖掘實戰》的實戰部分的第10章的資料——《家用電器使用者行為分析與事件識別》做的分析。旨在補充原文中的細節程式碼,並給出文中涉及到的內容的完整程式碼;另外,原文中的資料處理部分排版先後順序個人感覺較為凌亂,在此給出梳理。在作者所給程式碼的基礎
《Python資料分析與挖掘實戰》第8章——Apriori關聯規則
本文是基於《Python資料分析與挖掘實戰》的實戰部分的第八章的資料——《中醫證型關聯規則挖掘》做的分析。旨在補充原文中的細節程式碼,並給出文中涉及到的內容的完整程式碼。主要有:1)將原始資料按照聚類結果進行標記類別1 背景與目標分析 此專案旨在根據相關資料建模,獲取中