[机器学习实战]中程序执行问题修改

本文深入探讨了机器学习中的两大经典算法——朴素贝叶斯与随机森林。通过对垃圾邮件分类项目的剖析,详细介绍了朴素贝叶斯算法的实现与优化过程;并针对随机森林算法,在数据预处理阶段提出了一种改进方案,解决了特征类型判断的问题,确保了模型训练的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.第4章:朴素贝叶斯

垃圾邮件分类项目中

def spamTest():
    '''
    Desc:
        对贝叶斯垃圾邮件分类器进行自动化处理。
    Args:
        none
    Returns:
        对测试集中的每封邮件进行分类,若邮件分类错误,则错误数加 1,最后返回总的错误百分比。
    '''
    import random
    docList = []
    classList = []
    fullText = []
    for i in range(1,26):
        wordList=textParse(open('../Downloads/MachineLearning-master (1)/MachineLearning-master/input/4.NaiveBayes/email/spam/%d.txt' % i).read())
        docList.append(wordList)
        fullText.extend(wordList)
        classList.append(1)
        #查出问题在 文档《23.Txt》中,“SciFinance?is ”改成“SciFinance is ”即可
        wordList=textParse(open('../Downloads/MachineLearning-master (1)/MachineLearning-master/input/4.NaiveBayes/email/ham/%d.txt' % i).read())
        docList.append(wordList)
        fullText.extend(wordList)
        classList.append(0)
        。。。

执行时会出现Parse错误,查出问题在 文档《23.Txt》中,“SciFinance?is ”改成“SciFinance is ”即可。

2.第7章:集成方法(随机森林和Adaboost)

随机森林篇中最开始导入数据时,特征为浮点型数字,标签为字母,书中为区分特征,采用了str.isdigit()来判断,但isdigit()只能判断int类型,float会被判定为str,导致最终测试出错。
这里用正则表达式替换isdgit(),通过测试。

# 导入文件
def loadDataSet(filename):
    dataset = []
    with open(filename, 'r') as fr:
        for line in fr.readlines():
            if not line:
                continue
            lineArr=[]
            for feature in line.split(','):
                str_f=feature.strip()
                value = re.compile(r'^[-+]?\d*\.\d*|[-+]?\.?\d*$')
                result = value.match(str_f)

                if result:#(书中str_f.isdigit()对于浮点数无法判断)
                    lineArr.append(float(str_f))
                else:
                    lineArr.append(str_f)
            dataset.append(lineArr)
    return dataset
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值