


Penjelasan terperinci algoritma FP-Growth dalam Python
Algoritma FP-Growth ialah algoritma perlombongan corak kerap klasik Ia adalah algoritma yang sangat cekap untuk melombong koleksi item yang sering muncul bersama-sama daripada set data. Artikel ini akan memperkenalkan anda kepada prinsip dan kaedah pelaksanaan algoritma FP-Growth secara terperinci.
1. Prinsip Asas Algoritma FP-Growth
Idea asas algoritma FP-Growth ialah membina FP-Tree (pokok set item kerap) untuk mewakili set item kerap dalam set data, dan Set item kerap melombong daripada FP-Tree. FP-Tree ialah struktur data yang cekap yang boleh melombong set item kerap tanpa menghasilkan set item kerap calon.
FP-Tree mengandungi dua bahagian: nod akar dan nod pokok. Nod akar tidak mempunyai nilai, manakala nod pokok termasuk nama item dan bilangan kali item itu berlaku. FP-Tree juga termasuk pautan yang menghala ke nod yang sama, pautan ini dipanggil "penunjuk pautan".
Proses algoritma FP-Growth merangkumi dua bahagian: membina FP-Tree dan melombong set item kerap:
- Membina FP-Tree:
Untuk Bagi setiap transaksi, item bukan kerap dipadamkan dan diisih mengikut sokongan item kerap untuk mendapatkan set item kerap.
Lintas setiap urus niaga, dan masukkan set item kerap setiap transaksi ke dalam FP-Tree dalam susunan penampilan Jika nod sudah wujud, tambahkan bilangannya, masukkan nod baharu. .
- Melombong set item kerap:
Kaedah melombong item set kerap dari FP-Tree termasuk:
Mulakan dari bawah FP-Tree , cari perpustakaan corak bersyarat bagi setiap set item, dan pustaka corak bersyarat mengandungi semua transaksi yang mengandungi set item. Kemudian, FP-Tree baharu dibina secara rekursif untuk perpustakaan corak bersyarat, dan set item yang kerap dalam pepohon dicari.
Dalam FP-Tree baharu, setiap item yang kerap diisih mengikut sokongannya, satu set calon dibina dan dilombong secara rekursif. Ulangi proses di atas sehingga semua item set yang kerap ditemui.
2. Pelaksanaan algoritma FP-Growth
Algoritma FP-Growth boleh dilaksanakan menggunakan bahasa pengaturcaraan Python. Berikut ialah contoh mudah untuk menunjukkan pelaksanaan algoritma FP-Growth.
Mula-mula, tentukan set data, contohnya:
dataset = [['v', 'a', 'p', 'e', 's'], ['b', 'a', 'k', 'e'], ['a', 'p', 'p', 'l', 'e', 's'], ['d', 'i', 'n', 'n', 'e', 'r']]
Kemudian, tulis fungsi untuk menjana set item tersusun, contohnya:
def create_ordered_items(dataset): # 遍历数据集,统计每个项出现的次数 item_dict = {} for trans in dataset: for item in trans: if item not in item_dict: item_dict[item] = 1 else: item_dict[item] += 1 # 生成有序项集 ordered_items = [v[0] for v in sorted(item_dict.items(), key=lambda x: x[1], reverse=True)] return ordered_items
Di mana, fungsi create_ordered_items ialah digunakan untuk mengikuti Dapatkan set item yang dipesan dengan bilangan kejadian item.
Seterusnya, tulis fungsi untuk membina FP-Tree:
class TreeNode: def __init__(self, name, count, parent): self.name = name self.count = count self.parent = parent self.children = {} self.node_link = None def increase_count(self, count): self.count += count def create_tree(dataset, min_support): # 生成有序项集 ordered_items = create_ordered_items(dataset) # 建立根节点 root_node = TreeNode('Null Set', 0, None) # 建立FP-Tree head_table = {} for trans in dataset: # 过滤非频繁项 filtered_items = [item for item in trans if item in ordered_items] # 对每个事务中的项集按频繁项的支持度从大到小排序 filtered_items.sort(key=lambda x: ordered_items.index(x)) # 插入到FP-Tree中 insert_tree(filtered_items, root_node, head_table) return root_node, head_table def insert_tree(items, node, head_table): if items[0] in node.children: # 如果节点已存在,则增加其计数 node.children[items[0]].increase_count(1) else: # 如果节点不存在,则插入新的节点 new_node = TreeNode(items[0], 1, node) node.children[items[0]] = new_node # 更新链表中的指针 if head_table.get(items[0], None) is None: head_table[items[0]] = new_node else: current_node = head_table[items[0]] while current_node.node_link is not None: current_node = current_node.node_link current_node.node_link = new_node if len(items) > 1: # 对剩余的项进行插入 insert_tree(items[1:], node.children[items[0]], head_table)
Fungsi create_tree digunakan untuk membina FP-Tree.
Akhir sekali, tulis fungsi untuk melombong itemset kerap:
def find_freq_items(head_table, prefix, freq_items, min_support): # 对头指针表中的每个项按照出现的次数从小到大排序 sorted_items = [v[0] for v in sorted(head_table.items(), key=lambda x: x[1].count)] for item in sorted_items: # 将前缀加上该项,得到新的频繁项 freq_set = prefix + [item] freq_count = head_table[item].count freq_items.append((freq_set, freq_count)) # 构建该项的条件模式库 cond_pat_base = get_cond_pat_base(head_table[item]) # 递归地构建新的FP-Tree,并寻找频繁项集 sub_head_table, sub_freq_items = create_tree(cond_pat_base, min_support) if sub_head_table is not None: find_freq_items(sub_head_table, freq_set, freq_items, min_support) def get_cond_pat_base(tree_node): cond_pat_base = [] while tree_node is not None: trans = [] curr = tree_node.parent while curr.parent is not None: trans.append(curr.name) curr = curr.parent cond_pat_base.append(trans) tree_node = tree_node.node_link return cond_pat_base def mine_fp_tree(dataset, min_support): freq_items = [] # 构建FP-Tree root_node, head_table = create_tree(dataset, min_support) # 挖掘频繁项集 find_freq_items(head_table, [], freq_items, min_support) return freq_items
Fungsi mine_fp_tree digunakan untuk melombong set item kerap.
3. Ringkasan
Algoritma FP-Growth ialah algoritma perlombongan pola kerap yang cekap Dengan membina FP-Tree, item kerap boleh dilombong tanpa menghasilkan set item kerap calon. Python ialah bahasa pengaturcaraan yang sangat sesuai untuk melaksanakan algoritma FP-Growth Dengan menggunakan Python, kita boleh melaksanakan algoritma ini dengan cepat dan menggunakannya dalam amalan untuk melombong itemset yang kerap. Saya harap artikel ini dapat membantu anda memahami dengan lebih baik prinsip dan kaedah pelaksanaan algoritma FP-Growth.
Atas ialah kandungan terperinci Penjelasan terperinci algoritma FP-Growth dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

VS Kod boleh didapati di Mac. Ia mempunyai sambungan yang kuat, integrasi git, terminal dan debugger, dan juga menawarkan banyak pilihan persediaan. Walau bagaimanapun, untuk projek yang sangat besar atau pembangunan yang sangat profesional, kod VS mungkin mempunyai prestasi atau batasan fungsi.
