机器学习--朴素贝叶斯算法案例
来源:互联网 发布:c语言中指针有什么用 编辑:程序博客网 时间:2024/05/16 11:59
案例:电子邮件垃圾过滤
1、如何从文本文档中构建自己的词列表。使用正则表达式切分句子,并将字符串全部转换为小写。
####################################
# 功能:切分文本
# 输入变量:大字符串 big_string
# 输出变量:字符串列表
####################################
def text_parse(big_string):
list_of_tokens = re.split(r'\W*', big_string)
return [tok.lower() for tok in list_of_tokens if len(tok) > 2]
2、对贝叶斯垃圾邮件分类器自动化处理。本例中共有50封电子邮件,其中的10封电子邮件被随机选择为测试集,剩余部分作为训练集。通过多次迭代求出平均错误率来衡量分类器的性能。
####################################
# 功能:垃圾邮件测试
# 输入变量:空
# 输出变量:错误率
####################################
def spam_test():
doc_list = []
class_list = []
for i in xrange(1, 26):
word_list = text_parse(open('email/spam/%d.txt' % i).read())
doc_list.append(word_list)
class_list.append(1)
word_list = text_parse(open('email/ham/%d.txt' % i).read())
doc_list.append(word_list)
class_list.append(0)
vocab_list = create_vocab_list(doc_list)
training_set = range(50)
test_set = []
# 从50封邮件中随机选择10封做为测试集,相应的在训练集中剔除这10封邮件
for i in xrange(10):
rand_index = int(random.uniform(0, len(training_set)))
test_set.append(training_set[rand_index])
del(training_set[rand_index])
train_mat = []
train_classes = []
for doc_index in training_set:
train_mat.append(set_of_words2vec(vocab_list, doc_list[doc_index]))
train_classes.append(class_list[doc_index])
p0v, p1v, p_spam = train_nb0(array(train_mat), array(train_classes))
error_count = 0
# 遍历测试集,对其中的每封邮件进行分类
for doc_index in test_set:
word_vector = set_of_words2vec(vocab_list, doc_list[doc_index])
if classify_nb(array(word_vector), p0v, p1v, p_spam) != class_list[doc_index]:
error_count += 1
print 'classification error ', doc_list[doc_index]
print 'the error rate is: ', float(error_count)/len(test_set)
3、代码测试
def main():
spam_test()
if __name__ == '__main__':
main()
- 机器学习--朴素贝叶斯算法案例
- 机器学习算法-朴素贝叶斯
- 机器学习:朴素贝叶斯算法
- 机器学习--朴素贝叶斯算法
- 机器学习算法-朴素贝叶斯
- 机器学习算法:朴素贝叶斯
- 【机器学习算法】 朴素贝叶斯
- 朴素贝叶斯算法--机器学习
- 机器学习算法之朴素贝叶斯算法
- 机器学习算法之朴素贝叶斯算法
- 机器学习经典算法3-朴素贝叶斯
- 机器学习_算法_朴素贝叶斯
- 机器学习算法-深入探讨朴素贝叶斯
- 机器学习算法-朴素贝叶斯实战
- 机器学习实战-朴素贝叶斯算法
- 机器学习算法-朴素贝叶斯Python实现
- 机器学习之实战朴素贝叶斯算法
- 机器学习之实战朴素贝叶斯算法
- WCF系列_分布式事务(上)
- 我的CSDN博客开通啦!
- 【转】MySQL-5.6.13免安装版配置方法
- telnet www.baidu.com 80后怎么退出到Windows的cmd中来呢?
- nyoj题目53:不高兴的小明
- 机器学习--朴素贝叶斯算法案例
- poj 动态规划DP - 1664 放苹果
- C++ 字符串长度问题
- LightOJ1104---Birthday Paradox (概率)
- android 页面弹出框之Dialog
- YTU ---1402-Greedy Gift Givers 贪婪的送礼者
- Hibernate注解使用以及Spring整合
- 方法重写
- 超大型LED显示屏