BUC冰川演算法的python實現

2021-09-22 12:50:57 字數 2545 閱讀 1527

#生成資料的方法

def datainit():

a=['a1','a2','a3','a4','a5']

b=['b1','b2','b3','b4']

c=['c1','c2','c3']

d=['d1','d2']

datalist=

for i in range(21):

ax=random.randint(0,4)

bx=random.randint(0,3)

cx=random.randint(0,2)

dx=random.randint(0,1)

data=[a[ax],b[bx],c[cx],d[dx]]

#print(datalist)

datalist=dataframe(datalist)

datalist.to_csv('data.csv',index=false,encoding="utf_8_sig")

#生成資料如下

'''a1,b3,c1,d2

a2,b4,c1,d2

a4,b2,c1,d2

a1,b2,c1,d2

a1,b2,c1,d1

a5,b1,c1,d1

a5,b4,c3,d2

a5,b3,c2,d2

a2,b1,c3,d1

a1,b3,c3,d1

a4,b3,c1,d2

a3,b3,c1,d1

a5,b4,c2,d1

a2,b4,c1,d2

a1,b2,c3,d2

a2,b3,c2,d1

a5,b4,c3,d1

a3,b2,c1,d1

a3,b1,c2,d1

a1,b1,c2,d2

a3,b2,c3,d1

'''

datalist=pd.read_csv('data.csv')

#print(datalist)

#print(datalist.columns.size)

#計算每個維度的取值個數

#計算每個維度的取值集合

lenn=datalist.columns.size

numofall=[0]*lenn

#[5,4,3,2]

valueofall=

#[[a1,a2....],[b1,b2...]]

for j in range(lenn):

valueofsingle= #單個維度的取值

for i in range(len(datalist)):

if datalist.iloc[i, j] not in valueofsingle:

numofall[j]=len(valueofsingle)

print(valueofall)

print(numofall)

def buc(templist,n,curn,min_sup=3):   #curn代表當前維度游標,最小支援度設為3

if curn==n:

return #退出遞迴

for i in range(numofall[curn]):

#print(templist)

#print(count(templist,datalist))

if count(templist,datalist)>=min_sup:

#if templist not in result: #查重

print("%s :%d" %(str(templist),count(templist,datalist)))

buc(templist,n,curn+1) #加一維度遞迴呼叫

#templist.pop() #記得刪除temp

templist.pop()

#劃分放棄該維度 ab,abc,abcd,abd走完之後走ac

#即對下一維進行劃分

buc(templist,n,curn+1)

#計算list出現次數

def count(list,data):

number=0

for i in range(len(data)):

isin=true

for j in range(len(list)):

#print(type(data.iloc[i]))#series物件

#print(data.iloc[i].tolist())

if list[j] not in data.iloc[i].tolist(): #將series物件轉list才能not in

Perona Malik 演算法Python實現

最近正好在學習關於影象處理的東西,需要用到pm perona malik 演算法,所以就把自己的一些理解和 貼上來,希望能跟大家一起 pm演算法的具體原理可以網上查閱相關資料或者相關書籍,這裡只是簡要介紹大概的實現思路 一般而言,對乙個影象進行提取特徵之前,需要進行降噪濾波處理。最常用的應該是高斯濾...

Miller Rabin演算法 Python實現

用python實現了miller rabin的素性檢驗演算法 import random deflargeprime generate bit 1024 print generating large prime.i 1while true num random.randrange 2 bit 1 2...

LeetCode初級演算法的Python實現 鍊錶

之前沒有接觸過python編寫的鍊錶,所以這裡記錄一下思路。這裡前面的 是和leetcode中的一樣,因為做題需要呼叫,所以下面會給出。首先定義鍊錶的節點類。鍊錶節點 class listnode object def init self,x self.val x 節點值 self.next non...