分類器的簡單應用 NBC 樸素貝葉斯

2021-09-01 22:19:00 字數 1723 閱讀 4329

分類的問題

----------------------------

分類的使用

.根據名字判別性別

.文字分類

.詞性分類

.句子分割

.識別對話行為

分類演算法

.樸素貝葉斯

.決策樹

........

根據名字判別性別

建立分類器

1-確定輸入特徵

2-劃分資料集

3-使用訓練集構建分類器

4-使用測試集測試分類器的效果

def gender_features(word):

return

gender_features('shark')

from nltk.corpus import names

import nltk

import random

names_set=([(name,'male')for name in names.words('male.txt')]+[(name,'female')for name in names.words('female.txt')])

random.shuffle(names_set)#打亂資料集

print(names_set[:10])#列印前十個資料集

features=[(gender_features(n),g)for (n,g)in names_set]

train_set,test_set=features[500:],features[:500]

classifier=nltk.*****bayesclassifier.train(train_set)

-進行測試

classifier.classify(gender_features('neo'))

classifier.classify(gender_features('trinty'))

-計算準確率

print(nltk.classifier.accuracy(classifier,test_set))

-展示最有效的特徵

classifier.show_most_informative_features(5)

下面是在本人電腦上執行結果的展示

[('leeann', 'female'), ('virgil', 'male'), ('luce', 'male'), ('gracia', 'female'), ('dacie', 'female'), ('jabez', 'male'), ('darla', 'female'), ('shanon', 'female'), ('arianne', 'female'), ('dulcinea', 'female')]

0.77

most informative features

last letter = 'a'            female : male   =     36.9 : 1.0

last letter = 'k'              male : female =     31.8 : 1.0

last letter = 'f'              male : female =     17.3 : 1.0

last letter = 'p'              male : female =     10.5 : 1.0

last letter = 'd'              male : female =      9.7 : 1.0

樸素貝葉斯分類

1 貝葉斯分類是一類分類演算法的總稱,這類演算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。2 樸素貝葉斯的思想基礎是這樣的 對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認為此待分類項屬於哪個類別。通俗來說,就好比這麼個道理,你在街上看到乙個黑人,我問你你猜這哥們 來的,...

樸素貝葉斯分類

摘自寫在公司內部的wiki 要解決的問題 表中增加欄位classification,有四個取值 0 初始值,未分類 1 positive 2 normal 99 negative review submit前,由樸素貝葉斯分類器決定該條review的flag屬於negative還是positive ...

分類 樸素貝葉斯

原始的貝葉斯公式為 p b a p a b p a p a b p b p a 1 在分類問題中,y為類別,x為樣本特徵,則已知待 的樣本特徵 x 它為類別yi 的概率為 p yi x p x yi p y i p x p yi jp xj y i p x 2 p yi 類別為y i的樣本 數總樣本...