1. 程式人生 > >給出《Python資料分析與挖掘實戰大資料技術叢書》Aprior演算法另一種寫法

給出《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 背景與目標分析    此專案旨在根據相關資料建模,獲取中