国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)挖掘|序列模式挖掘及其算法的python實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)挖掘|序列模式挖掘及其算法的python實(shí)現(xiàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 序列模式挖掘

序列(sequence)模式挖掘也稱為序列分析。
序列模式發(fā)現(xiàn)(Sequential Patterns Discovery)是由R.Agrawal于1995年首先提出的。
序列模式尋找的是事件之間在順序上的相關(guān)性。

  • 例如,“凡是買了噴墨打印機(jī)的顧客中,80%的人在三個(gè)月之后又買了墨盒”,就是一個(gè)序列關(guān)聯(lián)規(guī)則。對(duì)于保險(xiǎn)行業(yè),通過分析顧客不同次的購(gòu)買行為發(fā)現(xiàn),顧客本次購(gòu)買重疾險(xiǎn),下次購(gòu)買分紅保險(xiǎn),則企業(yè)可以通過對(duì)重疾險(xiǎn)銷量的統(tǒng)計(jì)來預(yù)測(cè)分紅險(xiǎn)的銷售量。

序列模式挖掘在交易數(shù)據(jù)庫(kù)分析、Web訪問日志分析以及通信網(wǎng)絡(luò)分析等領(lǐng)域具有廣泛的應(yīng)用前景。

2. 基本概念

設(shè) I = i 1 , i 2 , . . . , i n I={i_1,i_2,...,i_n} I=i1?,i2?,...,in?是一個(gè)項(xiàng)集,序列就是若事件(元素)組成的有序列表。

一個(gè)序列 S e Se Se可表示為 < s 1 , s 2 , . . . , s n > <s_1,s_2,...,s_n> <s1?,s2?,...,sn?>,其中 s j ( j = 1 , 2 , … , n ) s_j(j=1,2, …, n) sj?(j=1,2,,n)為事件,也稱為 S e Se Se的元素。

元素由不同的項(xiàng)組成。當(dāng)元素只包含一項(xiàng)時(shí),一般省去括號(hào),例如, { i 2 } \{i_2\} {i2?}一般表示為 i 2 i_2 i2?。

元素之間是有順序的,但元素內(nèi)的項(xiàng)是無(wú)序的,一般定義為詞典序。序列包含項(xiàng)的個(gè)數(shù)稱為序列的長(zhǎng)度,長(zhǎng)度為 L L L的序列記為 L ? 序列 L-序列 L?序列。

序列數(shù)據(jù)庫(kù)就是元組 < s i d , S e > <sid, Se> <sid,Se>的集合,即有序事件序列組成的數(shù)據(jù)庫(kù),其中 S e Se Se是序列, s i d sid sid 是該序列的序列號(hào)。

存在兩個(gè)序列 α = < a 1 , a 2 , . . . , a n > , β = < b 1 , b 2 , … , b n > \alpha = <a_1, a_2, ...,a_n>, \beta = <b_1, b_2, …, b_n> α=<a1?,a2?,...,an?>,β=<b1?,b2?,,bn?>,如果存在整數(shù) 1 ≤ i 1 < i 2 < … < i n ≤ m 1\leq i_1 < i_2 <…<i_n \leq m 1i1?<i2?<<in?m a 1 ? b i 1 , a 2 ? b i 2 , … , a n ? b i n a_1\subseteq b_{i1}, a_2 \subseteq b_{i2}, …, a_n \subseteq b_{in} a1??bi1?,a2??bi2?,,an??bin?,那么稱序列 α \alpha α β \beta β 的子序列(subsequence),或者序列 β \beta β 包含 α \alpha α,記作 α ? β \alpha\subseteq \beta α?β 。

序列在序列數(shù)據(jù)庫(kù) S e Se Se 中的支持度為序列數(shù)據(jù)庫(kù) S e Se Se 中包含序列 α \alpha α的序列個(gè)數(shù)除以總的序列數(shù),記為 s u p p o r t ( α ) support (\alpha) support(α)。給定支持度閾值 τ \tau τ,如果序列 α \alpha α在序列數(shù)據(jù)庫(kù)中的支持度不低于 τ \tau τ,則稱序列 α \alpha α為序列模式(頻繁序列)。

3. 序列模式挖掘?qū)嵗?/h2>

現(xiàn)有事務(wù)數(shù)據(jù)庫(kù)如下表1所示,交易中不考慮顧客購(gòu)買物品的數(shù)量,只考慮物品有沒有被購(gòu)買。整理后可得到顧客購(gòu)物序列庫(kù),如表2所示。

  • 表1:顧客購(gòu)物事務(wù)數(shù)據(jù)庫(kù)
時(shí)間 顧客ID 購(gòu)物項(xiàng)集
2023.12.10 2 10,20
2023.12.11 5 90
2023.12.12 2 30
2023.12.13 2 40,60,70
2023.12.14 4 30
2023.12.15 3 30,50,70
2023.12.17 1 30
2023.12.17 1 90
2023.12.18 4 40,70
2023.12.19 4 90
  • 表2:顧客購(gòu)物序列庫(kù)
顧客ID 顧客購(gòu)物序列
1 <30,90>
2 <{10,20},30,{40,60,70}>
3 <{30,50,70}>
4 <30,{40,70},90>
5 <90>

設(shè)最小支持度為 25%,從表2中可以看出,<30,90> 是 <30, {40,70},90> 的子序列。兩個(gè)序列<30,90>、<30,{40,70},90>的支持度都為 40%,因此是序列模式。

4. 類Apriori算法(GSP算法)

序列模式挖掘是在給定序列數(shù)據(jù)庫(kù)中找出滿足最小支持度閾值的序列模式的過程。

4.1 算法思想

采用分而治之的思想,不斷產(chǎn)生序列數(shù)據(jù)庫(kù)的多個(gè)更小的投影數(shù)據(jù)庫(kù),然后在各個(gè)投影數(shù)據(jù)庫(kù)上進(jìn)行序列模式挖掘。

4.2 算法步驟

  1. 掃描序列數(shù)據(jù)庫(kù),得到長(zhǎng)度為 1 1 1的序列模式 L 1 L1 L1,作為初始的種子集。
  2. 根據(jù)長(zhǎng)度為 i i i 的種子集 L i ( i ≥ 1 ) L_i (i\geq1) Li?(i1) 通過連接操作生成長(zhǎng)度為 i + 1 i+1 i+1的候選序列模式 C i + 1 C_{i+1} Ci+1?;然后掃描序列數(shù)據(jù)庫(kù),計(jì)算每個(gè)候選序列模式的支持?jǐn)?shù),產(chǎn)生長(zhǎng)度為 i + 1 i+1 i+1的序列模式 L i + 1 L_{i+1} Li+1?,并將 L i + 1 L_{i+1} Li+1? 作為新的種子集。
  3. 重復(fù)第二步,直到?jīng)]有新的序列模式或新的候選序列模式產(chǎn)生為止

4.3 基于Python的算法實(shí)現(xiàn)

問題:原始序列為:<1,2,3,4>,<{1,5},2,3,4>, <1,3,4,{3,5}>, <1,3,5>, <4,5>,挖掘其中的序列模式。
以下代碼是本人自己實(shí)現(xiàn)的。感覺原始序列的數(shù)據(jù)結(jié)構(gòu)使用的不太好,導(dǎo)致子模式識(shí)別較為麻煩,可能存在錯(cuò)誤,僅保證本算例正確,敬請(qǐng)諒解。

import numpy as np
#子模式判斷 
def isSubSeq(seq,subseq)->bool:
    i=0;
    if len(subseq)>len(seq):
        return False
    for sel in subseq:
        if i >= len(seq):
            return False
        for j in range(i,len(seq)):
            if type(seq[j])==list:
                if sel in seq[j]:
                    i=j+1
                    break
                elif j==len(seq)-1:
                    return False
            elif sel==seq[j]:
                i=j+1
                break
            elif j==len(seq)-1:
                return False
            else:
                continue
    return True          

# 獲取L1數(shù)據(jù)集
def getL1(seq):
    ds=[]
    for ss in seq:
        for s in ss:
            if type(s)==list:
                for e in s:
                    if [e] not in ds:
                        ds.append([e])
            else:
                if [s] not in ds:
                    ds.append([s])
    return np.array(ds)

# 獲取L2數(shù)據(jù)集
def getL2(l1seq)->np.ndarray:
    ds=[]
    for i in range(len(l1seq)):
        for j in range(len(l1seq)):
            if i != j:
                #np.append(ds, [l1seq[i],l1seq[j]])
                ds.append([l1seq[i][0],l1seq[j][0]])    
    return  np.array(ds)  

# 獲取L3數(shù)據(jù)集
def getL3(l1seq,l2seq):
     ds=[]
     for se2 in l2seq:
         for se1 in l1seq:
             if se1 not in se2:
                 ds.append(np.append(se2, se1))         
     return  ds  
# 獲取L4數(shù)據(jù)集
def getL4(l1seq,l3seq):
     ds=[]
     for se3 in l3seq:
         for se1 in l1seq:
             if se1 not in se3:
                 ds.append(np.append(se3, se1))         
     return  ds        
 
#計(jì)算支持度
def calSup(dsq,seq):
    i=0.0
    for s in dsq:
        if isSubSeq(s,seq):
            i=i+1
    return i/len(dsq)

if __name__ == "__main__":
    min_support = 0.4  #最小支持度
    dsq = np.array([[1,2,3,4],[[1,5],2,3,4],
                         [1,3,4,[3,5]],[1,3,5],[4,5]],dtype=object)

    l1=getL1(dsq)
    for l in l1:
        print('序列-1:',l,'的支持度為:',calSup(dsq, l))
    l2 = getL2(l1)
    l2seq=[]
    for i in range(len(l2)):
        sups=calSup(dsq, l2[i])
        if sups >=min_support:
            print('序列-2:',l2[i],'的支持度為:',sups)
            l2seq.append(l2[i])
    l3=getL3(l1,l2seq)
    l3seq=[]
    for i in range(len(l3)):
        sups=calSup(dsq, l3[i])
        if sups >=min_support:
            print('序列-3:',l3[i],'的支持度為:',sups)
            l3seq.append(l3[i])
    l4=getL4(l1,l3seq)
    l4seq=[]
    for i in range(len(l4)):
        sups=calSup(dsq, l4[i])
        if sups >=min_support:
            print('序列-4:',l4[i],'的支持度為:',sups)
            l4seq.append(l4[i])

輸出:文章來源地址http://www.zghlxwxcb.cn/news/detail-845497.html

	序列-1: [1] 的支持度為: 0.8
	序列-1: [2] 的支持度為: 0.4
	序列-1: [3] 的支持度為: 0.8
	序列-1: [4] 的支持度為: 0.8
	序列-1: [5] 的支持度為: 0.8
	序列-2: [1 2] 的支持度為: 0.4
	序列-2: [1 3] 的支持度為: 0.8
	序列-2: [1 4] 的支持度為: 0.6
	序列-2: [1 5] 的支持度為: 0.4
	序列-2: [2 3] 的支持度為: 0.4
	序列-2: [2 4] 的支持度為: 0.4
	序列-2: [3 4] 的支持度為: 0.6
	序列-2: [3 5] 的支持度為: 0.4
	序列-2: [4 5] 的支持度為: 0.4
	序列-3: [1 2 3] 的支持度為: 0.4
	序列-3: [1 2 4] 的支持度為: 0.4
	序列-3: [1 3 4] 的支持度為: 0.6
	序列-3: [1 3 5] 的支持度為: 0.4
	序列-3: [2 3 4] 的支持度為: 0.4
	序列-4: [1 2 3 4] 的支持度為: 0.4

到了這里,關(guān)于數(shù)據(jù)挖掘|序列模式挖掘及其算法的python實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【數(shù)據(jù)挖掘】時(shí)間序列教程【九】

    ????????狀態(tài)空間模型通常試圖描述具有兩個(gè)特征的現(xiàn)象 有一個(gè)底層系統(tǒng)具有時(shí)變的動(dòng)態(tài)關(guān)系,因此系統(tǒng)在時(shí)間上的“狀態(tài)”t 與系統(tǒng)在時(shí)間的狀態(tài)t?1有關(guān) .如果我們知道系統(tǒng)在時(shí)間上的狀態(tài)t?1 ,那么我們就有了 我們需要知道的一切 ,以便對(duì)當(dāng)時(shí)的狀態(tài)進(jìn)行推斷或預(yù)測(cè)

    2024年02月13日
    瀏覽(20)
  • 【數(shù)據(jù)挖掘】時(shí)間序列教程【五】

    (說明:本文接上回: 【數(shù)據(jù)挖掘】時(shí)間序列教程【四】_無(wú)水先生的博客-CSDN博客 )? ? ? ?? ????????上面介紹的傅里葉變換的問題在于,無(wú)論是正弦/余弦回歸模型形式還是復(fù)指數(shù)形式,它都需要?操作以計(jì)算所有傅里葉系數(shù)。有n 數(shù)據(jù)點(diǎn)和有n/2 可以計(jì)算傅里葉系數(shù)的

    2024年02月11日
    瀏覽(23)
  • 【數(shù)據(jù)挖掘】時(shí)間序列教程【十】

    【數(shù)據(jù)挖掘】時(shí)間序列教程【十】

    上一節(jié)中描述的狀態(tài)空間模型作為觀測(cè)方程的更一般的公式 ???????? ? 和狀態(tài)方程 ???????? ? ????????這里是一個(gè)p×1?向量是一個(gè)k×1 向量,??是一個(gè)p×k 矩陣, ?是k×k 矩陣。我們可以想到的和? ????????給定初始狀態(tài)?和?,預(yù)測(cè)方程為(類似于上面) ?????

    2024年02月15日
    瀏覽(22)
  • 【數(shù)據(jù)挖掘】時(shí)間序列教程【四】

    【數(shù)據(jù)挖掘】時(shí)間序列教程【四】

    ????????我們可以對(duì)上述? 的主模型采用方差分析方法,并將中的總變異分解為 為殘差平方和和可歸因于各種頻率的變化。???????? ????????第二行是可能的,因?yàn)槠椒降乃薪徊骓?xiàng)都等于零,即對(duì)于所有?, ????????????????????????????????

    2024年02月12日
    瀏覽(16)
  • 【時(shí)間序列數(shù)據(jù)挖掘】ARIMA模型

    【時(shí)間序列數(shù)據(jù)挖掘】ARIMA模型

    目錄 0、前言 一、移動(dòng)平均模型MA 二、自回歸模型AR 三、自回歸移動(dòng)平均模型ARMA 四、自回歸移動(dòng)平均模型ARIMA 【總結(jié)】 傳統(tǒng)時(shí)間序列分析模型: ARIMA模型是一個(gè)非常靈活的模型,對(duì)于時(shí)間序列的好多特征都能夠進(jìn)行描述,比如說平穩(wěn)性特征,季節(jié)性特征,趨勢(shì)性特征。 AR

    2024年02月07日
    瀏覽(21)
  • 數(shù)據(jù)挖掘——關(guān)聯(lián)規(guī)則(Association Rule)Apriori算法和python代碼實(shí)現(xiàn)

    數(shù)據(jù)挖掘——關(guān)聯(lián)規(guī)則(Association Rule)Apriori算法和python代碼實(shí)現(xiàn)

    關(guān)聯(lián)規(guī)則(Association Rules)是反映一個(gè)事物與其他事物之間的相互依存性和關(guān)聯(lián)性,是數(shù)據(jù)挖掘的一個(gè)重要技術(shù),用于從大量數(shù)據(jù)中挖掘出有價(jià)值的數(shù)據(jù)項(xiàng)之間的相關(guān)關(guān)系。 用一些例子來說明一下: 當(dāng)我們?cè)诔羞M(jìn)行購(gòu)物時(shí),超市中有琳瑯滿目的商品,在每一次購(gòu)物結(jié)束之后,

    2024年02月04日
    瀏覽(92)
  • 【數(shù)據(jù)挖掘】時(shí)間序列模型處理指南(二)

    ????????本文是一個(gè)系列文章的第二部分,本文將用股票數(shù)據(jù)進(jìn)行時(shí)間序列分析為例,對(duì)時(shí)間分析的方法、過程,進(jìn)行詳細(xì)闡述。 ????????在文章第一部分種:【數(shù)據(jù)挖掘】時(shí)間序列模型處理(一)_無(wú)水先生的博客-CSDN博客 ????????我們將使用新德國(guó)基金(GF)的歷

    2024年02月12日
    瀏覽(29)
  • 【數(shù)據(jù)挖掘】使用 LSTM 進(jìn)行時(shí)間和序列預(yù)測(cè)

    【數(shù)據(jù)挖掘】使用 LSTM 進(jìn)行時(shí)間和序列預(yù)測(cè)

    ????????每天,人類在執(zhí)行諸如過馬路之類的任務(wù)時(shí)都會(huì)做出被動(dòng)預(yù)測(cè),他們估計(jì)汽車的速度和與汽車的距離,或者通過猜測(cè)球的速度并相應(yīng)地定位手來接球。這些技能是通過經(jīng)驗(yàn)和實(shí)踐獲得的。然而,由于涉及眾多變量,預(yù)測(cè)天氣或經(jīng)濟(jì)等復(fù)雜現(xiàn)象可能很困難。在這種情

    2024年02月15日
    瀏覽(28)
  • 【數(shù)據(jù)挖掘】屬性及其類型和數(shù)據(jù)的統(tǒng)計(jì)描述四分位數(shù)等詳解(圖文解釋 超詳細(xì))

    【數(shù)據(jù)挖掘】屬性及其類型和數(shù)據(jù)的統(tǒng)計(jì)描述四分位數(shù)等詳解(圖文解釋 超詳細(xì))

    覺得有幫助請(qǐng)點(diǎn)贊關(guān)注收藏~~~ 屬性:(Attribute)是一個(gè)數(shù)據(jù)字段,表示數(shù)據(jù)對(duì)象的一個(gè)特征。在文獻(xiàn)中,屬性、維(Dimension)、特征(Feature)和變量(Variable)表示相同的含義,可以在不同場(chǎng)合互換使用。 屬性類型:屬性的取值范圍決定了屬性的類型 一類是定性描述的屬性

    2024年02月04日
    瀏覽(17)
  • 基于Python的網(wǎng)絡(luò)爬蟲及數(shù)據(jù)處理---智聯(lián)招聘人才招聘特征分析與挖掘的算法實(shí)現(xiàn)

    基于Python的網(wǎng)絡(luò)爬蟲及數(shù)據(jù)處理---智聯(lián)招聘人才招聘特征分析與挖掘的算法實(shí)現(xiàn)

    收藏和點(diǎn)贊,您的關(guān)注是我創(chuàng)作的動(dòng)力 ??隨著科學(xué)技術(shù)的發(fā)展,人類進(jìn)入了互聯(lián)網(wǎng)時(shí)代,不僅數(shù)據(jù)量龐大,而且數(shù)據(jù)種類繁多,Python簡(jiǎn)單易學(xué), 語(yǔ)法清晰,在數(shù)據(jù)操作方面有著一定優(yōu)勢(shì),成為了數(shù)據(jù)采集和可視化領(lǐng)域的熱門語(yǔ)言。本論文主要是使用Python來作為開發(fā)語(yǔ)言,并

    2024年02月03日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包