机器学习实战_初识朴素贝叶斯算法_理解其python代码(二)

简介: 机器学习实战_初识朴素贝叶斯算法_理解其python代码(二)

python 基础:

中间还有pickle二进制读取文件部分的error这个可以参见:机器学习实战初识决策树(ID3)算法理解其python代码(二)的第四部分

append: Appends object at end.:

x = [1, 2, 3]
x.append([4, 5])
print (x)
[1, 2, 3, [4, 5]]

extend: Extends list by appending elements from the iterable.:

x = [1, 2, 3]
x.extend([4, 5])
print (x)
[1, 2, 3, 4, 5]

测试算法:

import random
import re
from numpy import array
import LoadData
import bayes
def textParse(bigString):#接收大字符串,解析处理后返回字符串列表(去掉少于两个字符的字符串,并将所有字符串转换为小写)
    listOfTokens = re.compile('\\W*')
    listOfTokens = listOfTokens.split(bigString)#compile()split(r'\W*',bigString)#正则表达式re模块,详见之前的文章
    return [tok.lower() for tok in listOfTokens if len(tok)>0]#列表解析
'''这里出现错误最多的也还是Py2.x和Py3.x的不同导致的问题'''
def spamTest():
    docList = []
    classList = []
    fullText = []
    #读取25*2个文本
    for i in range(1,26):
        wordList = textParse(open('email/spam/%d.txt' % i,'rb').read().decode('GBK','ignore') )#1,UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte sequence
        #加上后面的后綴,因为有可能文件中存在类似“�”非法字符。
        docList.append(wordList)
        fullText.extend(wordList)
        classList.append(1)
        wordList = textParse(open('email/ham/%d.txt' % i,'rb').read().decode('GBK','ignore') )#UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte sequence
        #这里还是Pickle的二进制问题,所以要加上‘rb’,其他nicodeDecodeError同上
        #注意append和extend的区别
        docList.append(wordList)
        fullText.extend(wordList)
        classList.append(0)
    vocabList = LoadData.createVocabList(docList)#得到参考用的词典
    #随机构建训练集
    trainingSet = list(range(50))
    testSet = []
    for i in range(10):#得到随机测试集
        randIndex = int(random.uniform(0,len(trainingSet)))
        testSet.append(trainingSet[randIndex])
        del(trainingSet[randIndex])#TypeError: 'range' object doesn't support item deletion,因为是python3中range不返回数组对象,而是返回range对象,所以trainingSet = list(range(50))而不是range(50)
    trainMat = [];trainClasses = []
    for docIndex in trainingSet:
        trainMat.append(LoadData.setOfWords2Vec(vocabList,docList[docIndex]))
        trainClasses.append(classList[docIndex])
    p0V,p1V,pSpam = bayes.trainNB0(array(trainMat),array(trainClasses))#计算相应的概率
    errorCount = 0
    for docIndex in testSet:
        wordVector = LoadData.setOfWords2Vec(vocabList,docList[docIndex])
        if bayes.classifyNB(array(wordVector),p0V,p1V,pSpam) != classList[docIndex]:#判断文本的类别
            errorCount+=1
    print('the error rate is :',float(errorCount)/len(testSet))

AIEarth是一个由众多领域内专家博主共同打造的学术平台,旨在建设一个拥抱智慧未来的学术殿堂!【平台地址:https://devpress.csdn.net/aiearth】 很高兴认识你!加入我们共同进步!

目录
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
342 7
|
2月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
2月前
|
存储 分布式计算 测试技术
Python学习之旅:从基础到实战第三章
总体来说,第三章是Python学习路程中的一个重要里程碑,它不仅加深了对基础概念的理解,还引入了更多高级特性,为后续的深入学习和实际应用打下坚实的基础。通过这一章的学习,读者应该能够更好地理解Python编程的核心概念,并准备好应对更复杂的编程挑战。
114 12
|
2月前
|
存储 数据采集 监控
Python文件操作全攻略:从基础到高级实战
本文系统讲解Python文件操作核心技巧,涵盖基础读写、指针控制、异常处理及大文件分块处理等实战场景。结合日志分析、CSV清洗等案例,助你高效掌握文本与二进制文件处理,提升程序健壮性与开发效率。(238字)
333 1
|
2月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
539 1
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
278 0
|
2月前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
374 0
|
2月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1179 6
|
7月前
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。

推荐镜像

更多