最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中Apriori算法實現(xiàn)講解

 更新時間:2017年12月10日 18:29:12   作者:三年一夢  
給大家詳細(xì)講解一下Apriori 算法在python中的實現(xiàn)過程,有需要的朋友收藏一下本片文章吧。

本文主要給大家講解了Apriori算法的基礎(chǔ)知識以及Apriori算法python中的實現(xiàn)過程,以下是所有內(nèi)容:

1. Apriori算法簡介

Apriori算法是挖掘布爾關(guān)聯(lián)規(guī)則頻繁項集的算法。Apriori算法利用頻繁項集性質(zhì)的先驗知識,通過逐層搜索的迭代方法,即將K-項集用于探察(k+1)項集,來窮盡數(shù)據(jù)集中的所有頻繁項集。先找到頻繁項集1-項集集合L1, 然后用L1找到頻繁2-項集集合L2,接著用L2找L3,知道找不到頻繁K-項集,找到每個Lk需要一次數(shù)據(jù)庫掃描。注意:頻繁項集的所有非空子集也必須是頻繁的。Apriori性質(zhì)通過減少搜索空間,來提高頻繁項集逐層產(chǎn)生的效率。Apriori算法由連接和剪枝兩個步驟組成。

2. Apriori算法步驟

 根據(jù)一個實例來解釋:下圖是一個交易單,I1至I5可看作5種商品。下面通過頻繁項集合來找出關(guān)聯(lián)規(guī)則。

假設(shè)我們的最小支持度閾值為2,即支持度計數(shù)小于2的都要刪除。

        

上表第一行(第一項交易)表示:I1和I2和I5一起被購買。

C1至L1的過程: 只需查看支持度是否高于閾值,然后取舍。上圖C1中所有閾值都大于2,故L1中都保留。

L1至C2的過程分三步:

遍歷產(chǎn)生L1中所有可能性組合,即(I1,I2)...(I4,I5 )    對便利產(chǎn)生的每個組合進行拆分,以保證頻繁項集的所有非空子集也必須是頻繁的。即對于(I1,I2)來說進行拆分為I1,I2.由于I1和I2在L1中都為頻繁項,所以這一組合保留。對于剩下的C2根據(jù)原數(shù)據(jù)集中進行支持度計數(shù)

C2至L2的過程: 只需查看支持度是否高于閾值,然后取舍。

L2至C3的過程:

還是上面的步驟。首先生成(1,2,3)、(1,2,4)、(1,2,5)....為什么最后只剩(1,2,3)和(1,2,5)呢?因為剪枝過程:(1,2,4)拆分為(1,2)和(1,4)和(2,4).然而(1,4)在L2中不存在,即非頻繁項。所有剪枝刪除。然后對C3中剩下的組合進行計數(shù)。發(fā)現(xiàn)(1,2,3)和(1,2,5)的支持度2。迭代結(jié)束。

所以算法過程就是 Ck - Lk - Ck+1 的過程:

3.Apriori算法實現(xiàn)

# -*- coding: utf-8 -*-
"""
Created on Sat Dec 9 15:33:45 2017
@author: LPS
"""
import numpy as np
from itertools import combinations # 迭代工具
data = [[1,2,5], [2,4], [2,3], [1,2,4], [1,3], [2,3], [1,3], [1,2,3,5], [1,2,3]]
minsp = 2
d = []
for i in range(len(data)):
 d.extend(data[i])
new_d = list(set(d))
def satisfy(s, s_new, k): # 更新確實存在的L 
 e =[]
 ss_new =[]
 for i in range(len(s_new)):
  for j in combinations(s_new[i], k): # 迭代產(chǎn)生所有元素可能性組合
   e.append(list(j))
  if ([l for l in e if l not in s]) ==[] :
   ss_new.append(s_new[i])
  e = []
  return ss_new # 篩選滿足條件的結(jié)果 
def count(s_new): # 返回narray格式的C
 num = 0
 C = np.copy(s_new)
 C = np.column_stack((C, np.zeros(C.shape[0])))
 for i in range(len(s_new)):
  for j in range(len(data)):
   if ([l for l in s_new[i] if l not in data[j]]) ==[] :
    num = num+1
  C[i,-1] = num
  num = 0   
 return C
def limit(L): # 刪掉不滿足閾值的C
 row = []
 for i in range(L.shape[0]):
  if L[i,-1] < minsp :
   row.append(i)
 L = np.delete(L, row, 0) 
 return L
def generate(L, k): # 實現(xiàn)由L至C的轉(zhuǎn)換
 s = []
 for i in range(L.shape[0]):
  s.append(list(L[i,:-1]))
 s_new = []
# L = L.delete(L, -1, 1)
# l = L.shape[1]
 for i in range(L.shape[0]-1):
  for j in range(i+1, L.shape[0]):
   if (L[j,-2]>L[i,-2]):
    t = list(np.copy(s[i]))
    t.append(L[j,-2])
    s_new.append(t) # s_new為列表
    
 s_new = satisfy(s, s_new, k) 
 C = count(s_new)
 return C
# 初始的C與L
C = np.zeros([len(new_d), 2])
for i in range(len(new_d)):
 C[i:] = np.array([new_d[i], d.count(new_d[i])])
L = np.copy(C)
L = limit(L)
# 開始迭代
k = 1
while (np.max(L[:,-1]) > minsp):
 C = generate(L, k) # 由L產(chǎn)生C
 L = limit(C)  # 由C產(chǎn)生L
 k = k+1
# 對最終結(jié)果去重復(fù)
print((list(set([tuple(t) for t in L])))
# 結(jié)果為 [(1.0, 2.0, 3.0, 2.0), (1.0, 2.0, 5.0, 2.0)]

相關(guān)文章

  • Python基礎(chǔ)第三方模塊requests openpyxl

    Python基礎(chǔ)第三方模塊requests openpyxl

    這篇文章主要為大家介紹了Python基礎(chǔ)第三方模塊requests openpyxl使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Keras 多次加載model出錯的解決方案

    Keras 多次加載model出錯的解決方案

    這篇文章主要介紹了Keras 多次加載model出錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例

    ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例

    這篇文章主要介紹了ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Tensorflow 1.0之后模型文件、權(quán)重數(shù)值的讀取方式

    Tensorflow 1.0之后模型文件、權(quán)重數(shù)值的讀取方式

    今天小編就為大家分享一篇Tensorflow 1.0之后模型文件、權(quán)重數(shù)值的讀取方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python中字符串去空格的五種方法介紹與對比

    Python中字符串去空格的五種方法介紹與對比

    在?Python?中,去除字符串中的空格是一個常見的操作,這篇文章小編將為大家盤點一下python中常用的的去空格的方法,需要的可以參考一下
    2025-02-02
  • Python編寫打字訓(xùn)練小程序

    Python編寫打字訓(xùn)練小程序

    這篇文章主要介紹了Python編寫打字訓(xùn)練小程序,需要的朋友可以參考下
    2019-09-09
  • 如何使用python寫截屏小工具

    如何使用python寫截屏小工具

    這篇文章主要介紹了如何使用python寫截屏小工具,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 使用國內(nèi)鏡像源優(yōu)化pip install下載的方法步驟

    使用國內(nèi)鏡像源優(yōu)化pip install下載的方法步驟

    在Python開發(fā)中,pip 是一個不可或缺的工具,用于安裝和管理Python包,然而,由于默認(rèn)的PyPI服務(wù)器位于國外,國內(nèi)用戶在安裝依賴時可能會遇到下載速度慢、連接不穩(wěn)定等問題,所以本文將詳細(xì)介紹如何使用國內(nèi)鏡像源來加速pip install -r requirements.txt的過程
    2025-03-03
  • 用python畫一只帥氣的皮卡丘

    用python畫一只帥氣的皮卡丘

    大家好,本篇文章主要講的是用python畫一只帥氣的皮卡丘,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python模塊之time模塊(實例講解)

    python模塊之time模塊(實例講解)

    下面小編就為大家?guī)硪黄猵ython模塊之time模塊(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論

攀枝花市| 湄潭县| 瓦房店市| 库伦旗| 电白县| 长春市| 九龙县| 高平市| 延津县| 白河县| 竹北市| 平邑县| 稷山县| 邯郸市| 永安市| 无为县| 巴林左旗| 保定市| 南投县| 军事| 温宿县| 宁安市| 杭锦后旗| 伊金霍洛旗| 通榆县| 塔河县| 凤翔县| 宝鸡市| 鹰潭市| 铁岭市| 柏乡县| 若尔盖县| 武城县| 龙南县| 科技| 岫岩| 花莲县| 寿光市| 和政县| 洛南县| 遂溪县|