Rumah > Artikel > pembangunan bahagian belakang > Contoh Naive Bayes dalam Python
Python ialah bahasa pengaturcaraan yang ringkas dan mudah dipelajari dengan perpustakaan pengkomputeran saintifik yang kaya dan alatan pemprosesan data. Antaranya, algoritma Naive Bayes, sebagai kaedah pembelajaran mesin klasik, juga digunakan secara meluas dalam bahasa Python. Artikel ini akan menggunakan contoh untuk memperkenalkan penggunaan dan langkah Naive Bayes dalam Python.
Algoritma Naive Bayes ialah algoritma pengelasan berdasarkan teorem Bayes Idea terasnya ialah menggunakan data latihan yang diketahui Ciri-ciri set digunakan untuk membuat kesimpulan keputusan klasifikasi data baharu. Dalam aplikasi praktikal, algoritma Naive Bayes sering digunakan dalam senario seperti klasifikasi teks, penapisan spam dan analisis sentimen.
Ciri algoritma Naive Bayes ialah ia menganggap bahawa setiap ciri adalah bebas antara satu sama lain. Andaian ini selalunya tidak benar dalam situasi sebenar, jadi algoritma Naive Bayes dipanggil "naif". Walaupun andaian ini, Naive Bayes masih menunjukkan prestasi yang baik dalam masalah seperti klasifikasi teks pendek.
Dalam Python, langkah-langkah untuk menggunakan Pengelas Naive Bayes boleh diringkaskan seperti berikut:
2.1 Sediakan data
Pertama, anda perlu menyediakan data latihan dan data ujian untuk diklasifikasikan. Data ini boleh dalam bentuk teks, gambar, audio dan sebagainya, tetapi ia perlu ditukar kepada bentuk yang boleh difahami oleh komputer. Dalam masalah klasifikasi teks, selalunya perlu untuk menukar teks kepada perwakilan vektor.
2.2 Model latihan
Seterusnya, anda perlu menggunakan set data latihan untuk membina pengelas Naive Bayes. Terdapat tiga pengelas Bayes naif yang biasa digunakan dalam Python:
Mengambil klasifikasi teks sebagai contoh, anda boleh menggunakan kelas TfidfVectorizer yang disediakan oleh perpustakaan sklearn untuk menukar teks kepada perwakilan vektor dan menggunakan pengelas MultinomialNB untuk latihan.
2.3 Model ujian
Selepas latihan selesai, set data ujian perlu digunakan untuk menilai prestasi model. Biasanya, set data ujian dan set data latihan adalah bebas. Perlu diingatkan bahawa data daripada set data latihan tidak boleh digunakan semasa ujian. Anda boleh menggunakan fungsi accuracy_score yang disediakan oleh perpustakaan sklearn untuk mengira ketepatan model.
Untuk menunjukkan aplikasi praktikal pengelas Naive Bayes, artikel ini menggunakan pengelasan teks berasaskan Naive Bayes Contohnya.
3.1 Sediakan data
Pertama, cari dua set data teks daripada Internet, iaitu "Berita Sukan" dan "Berita Teknologi", setiap set data mengandungi 1000 teks. Letakkan dua set data ke dalam folder yang berbeza dan labelkan teks sebagai "Sukan" dan "Teknologi" masing-masing.
3.2 Gunakan perpustakaan sklearn untuk pengelasan
Seterusnya, gunakan pengelas Bayes naif yang disediakan oleh perpustakaan sklearn untuk pengelasan.
(1) Import perpustakaan berkaitan
from sklearn.model_selection import train_test_split from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import accuracy_score import os
(2) Baca data teks dan anotasinya
def read_files(path): text_list = [] label_list = [] for root, dirs, files in os.walk(path): for file in files: file_path = os.path.join(root, file) with open(file_path, 'r', encoding='utf-8') as f: text = ''.join(f.readlines()) text_list.append(text) if '体育' in file_path: label_list.append('体育') elif '科技' in file_path: label_list.append('科技') return text_list, label_list
(3) Tukar teks kepada perwakilan vektor
def text_vectorizer(text_list): vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(text_list) return X, vectorizer
(4) Latih model dan kembalikan ketepatan
def train(text_list, label_list): X, vectorizer = text_vectorizer(text_list) y = label_list X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) clf = MultinomialNB() clf.fit(X_train, y_train) y_pred = clf.predict(X_test) acc = accuracy_score(y_test, y_pred) return clf, vectorizer, acc
(5) Uji model
def predict(clf, vectorizer, text): X = vectorizer.transform(text) y_pred = clf.predict(X) return y_pred[0]
3.3 Analisis keputusan
Jalankan kod di atas untuk mendapatkan ketepatan pengelas ialah 0.955. Apabila melakukan pengelasan sebenar, anda hanya perlu memasukkan teks untuk diklasifikasikan ke dalam fungsi ramalan untuk mengembalikan kategori yang dimilikinya. Sebagai contoh, masukkan teks "iPhone 12 akhirnya dikeluarkan!" untuk kembali ke kategori "Teknologi".
Sebagai algoritma pengelasan yang mudah dan berkesan, algoritma Naive Bayes juga digunakan secara meluas dalam Python. Artikel ini memperkenalkan kaedah dan langkah menggunakan pengelas Naive Bayes dan mengambil pengelasan teks berdasarkan Naive Bayes sebagai contoh untuk menunjukkan aplikasi praktikal pengelas tersebut. Dalam proses aplikasi sebenar, prapemprosesan data, pemilihan ciri dan operasi lain juga diperlukan untuk meningkatkan ketepatan pengelas.
Atas ialah kandungan terperinci Contoh Naive Bayes dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!