分类器的简单应用---NBC(朴素贝叶斯)

分类的问题

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

分类的使用
.根据名字判别性别
.文本分类
.词性分类
.句子分割
.识别对话行为
分类算法
.朴素贝叶斯
.决策树
........

根据名字判别性别
建立分类器
1-确定输入特征
2-划分数据集
3-使用训练集构建分类器
4-使用测试集测试分类器的效果

def gender_features(word):
     return {'last letter':word[-1]}
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.NaiveBayesClassifier.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
 

 

 


-大型数据时进行数据集的划分
from nltk.classify import apply_features
train_set=apply_features(gender_features,names_set[500:])
test_set=apply_features(gender_features,names_set[:500])


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值