Rumah > pembangunan bahagian belakang > Tutorial Python > Contoh Naive Bayes dalam Python

Contoh Naive Bayes dalam Python

王林
Lepaskan: 2023-06-09 23:36:06
asal
991 orang telah melayarinya

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.

  1. Pengenalan kepada Naive Bayes

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.

  1. Menggunakan Pengelas Naive Bayes

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:

  • GaussianNB: sesuai untuk pengelasan data berterusan.
  • BernoulliNB: Sesuai untuk klasifikasi data binari.
  • MultinomialNB: Sesuai untuk pengelasan data multivariate.

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.

  1. Contoh: Pengelasan teks berdasarkan Naive Bayes

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
Salin selepas log masuk

(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
Salin selepas log masuk

(3) Tukar teks kepada perwakilan vektor

def text_vectorizer(text_list):
    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(text_list)
    return X, vectorizer
Salin selepas log masuk

(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
Salin selepas log masuk

(5) Uji model

def predict(clf, vectorizer, text):
    X = vectorizer.transform(text)
    y_pred = clf.predict(X)
    return y_pred[0]
Salin selepas log masuk

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".

  1. Ringkasan

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan