Algoritma Naive Bayes ialah salah satu algoritma pembelajaran mesin klasik Ia digunakan secara meluas, terutamanya dalam bidang seperti klasifikasi teks dan penapisan spam, serta mempunyai ketepatan dan kecekapan yang tinggi. Artikel ini akan memperkenalkan pelaksanaan algoritma Naive Bayes dalam Python dan menggambarkan aplikasinya dengan contoh.
1. Pengenalan kepada algoritma Naive Bayes
Algoritma Naive Bayes ialah algoritma pengelasan berdasarkan teorem Bayes dan andaian kebebasan ciri. Idea asas adalah untuk membuat kesimpulan klasifikasi data baharu melalui kebarangkalian bersyarat bagi data kategori yang diketahui. Secara khusus, sebelum pengelasan, model perlu dilatih, iaitu, kebarangkalian bersyarat bagi setiap ciri di bawah setiap kategori dikira. Kemudian apabila mengklasifikasikan, kebarangkalian bahawa data baharu tergolong dalam setiap kategori dikira mengikut teorem Bayes, dan kategori yang sepadan dengan kebarangkalian maksimum dipilih sebagai hasil ramalan. Oleh kerana ciri diandaikan bebas, algoritma dinamakan "Naive Bayes".
2. Pelaksanaan Naive Bayes dalam Python
Terdapat berbilang perpustakaan atau modul dalam Python yang boleh digunakan untuk melaksanakan algoritma Naive Bayes, seperti scikit-learn, nltk, gensim, dsb. Artikel ini akan memperkenalkan cara melaksanakan algoritma Bayes yang naif menggunakan perpustakaan pembelajaran scikit.
1 Sediakan set data
Mula-mula, anda perlu menyediakan set data untuk melatih dan menguji pengelas. Dalam contoh ini, kami memilih "Set Data Pangkalan Spam" pada UCI Machine Learning Repository Set data ini mengandungi 4601 e-mel, yang mana 1813 adalah e-mel spam dan 2788 adalah e-mel biasa. Set data ini boleh dimuat turun dan disimpan dalam format CSV.
2. Import data dan bahagikan set latihan dan set ujian
Gunakan fungsi read_csv pustaka panda untuk membaca fail CSV ke dalam format DataFrame dan bahagikannya kepada set latihan dan set ujian. Kodnya adalah seperti berikut:
import panda sebagai pd
daripada sklearn.model_selection import train_test_split
df = pd.read_csv('spambase.csv' )
X = df.iloc[:, :-1]
y = df.iloc[:, -1]
X_train, X_test, y_train, y_test = train_test_split (X, y, test_size=0.3, random_state=42)
3 Model latihan
Gunakan kelas MultinomialNB pustaka sklearn untuk memulakan model klasifikasi Bayes yang naif. dan gunakan data latihan untuk latihan model, kod Seperti berikut:
dari sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB()
clf.fit (X_train, y_train)
4. Model ujian
Gunakan set ujian untuk menguji pengelas dan mengira ketepatan pengelasan adalah seperti berikut:
daripada sklearn.metrics import accuracy_score.
y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('Ketepatan: {:.2f}%'.format (acc*100))
5 Guna model
Gunakan model terlatih untuk mengklasifikasikan data baharu dan mengeluarkan hasil ramalan adalah seperti berikut:
data_baharu = [[0.05, 0.08, 0.00, 0.00, 0.04, 0.00, 0.00, 0.14, 0.03, 0.10, 0.05, 0.00, 0.02, 0.0, 0.0, 0.0, 0.0, 0.04, 04, 0.67, 2.16, 10.00 , 136.00, 0.00, 0.96, 0.00, 0.00, 0.00, 0.32, 0.01]]
ramalan = clf.predict(data_baharu)
cetak('Ramalan:', ramalan)Dalam contoh ini, masalah klasifikasi digunakan, dan ciri-cirinya ialah Kekerapan perkataan dalam e-mel, dengan matlamat untuk mengklasifikasikan e-mel kepada spam dan e-mel biasa. Selepas latihan, algoritma Bayes naif digunakan untuk pengelasan dan ketepatan 90.78% diperolehi. Ia dapat dilihat daripada keputusan bahawa dalam situasi aplikasi tertentu, Naive Bayes mempunyai keputusan pengelasan yang sangat baik.
4. Kesimpulan
Atas ialah kandungan terperinci Contoh algoritma Naive Bayes dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!