机器学习实战_初识朴素贝叶斯算法_理解其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】 很高兴认识你!加入我们共同进步!

目录
相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
111 55
|
23天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
73 4
|
21天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
124 67
|
21天前
|
存储 搜索推荐 Python
用 Python 实现快速排序算法。
快速排序的平均时间复杂度为$O(nlogn)$,空间复杂度为$O(logn)$。它在大多数情况下表现良好,但在某些特殊情况下可能会退化为最坏情况,时间复杂度为$O(n^2)$。你可以根据实际需求对代码进行调整和修改,或者尝试使用其他优化策略来提高快速排序的性能
115 61
|
15天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
93 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
21天前
|
存储 算法 搜索推荐
Python 中数据结构和算法的关系
数据结构是算法的载体,算法是对数据结构的操作和运用。它们共同构成了计算机程序的核心,对于提高程序的质量和性能具有至关重要的作用
|
21天前
|
数据采集 存储 算法
Python 中的数据结构和算法优化策略
Python中的数据结构和算法如何进行优化?
|
20天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
39 1
|
29天前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
存储 缓存 NoSQL
实战|教你用Python玩转Redis
之前辰哥已经给大家教了Python如何去连接Mysql(实战|教你用Python玩转Mysql),并进行相应操作(插、查、改、删)。除了Mysql外,Python最常搭配的数据库还有Redis。 那么今天辰哥就来给大家讲解一下Python如何使用Redis,并进行相关的实战操作。
491 0