COMP9318Lab3InstructionsThis笔记本包含COMP9318-Lab3的说明。您需要在随本笔记本提供的文件submission.py中完成您的实施。您不得打印出不必要的内容。我们不会考虑在屏幕上打印出的任何输出。所有结果都应通过相应的函数以适当的数据结构返回。您可以通过以下链接提交Lab3的实施:https://kg.cse.unsw.edu.au/su...。对于每个问题,我们都提供了为您提供详细说明以及问题标题。如有任何问题,您可以在@Ed上发布您的查询。您可以添加其他函数和/或导入模块(您可能必须在本实验室中这样做),但不允许定义全局变量。submission.py中只允许有函数。不要引入不必要的模块/库,测试时不引入这些模块会导致错误。我们会提供imm编辑对您提交的反馈。您可以在同一天使用在线提交门户访问您的分数。对于最终评估,我们将使用不同的数据集,因此您的最终分数可能会有所不同。您可以在截止日期前提交任意多次,但仅限最新版本将被保留并标记。该作业的提交截止日期为2021年3月29日(悉尼时间)20:59:59。我们将不接受任何延迟提交。问题1:使用多项式朴素贝叶斯进行文本分类您需要实现一个多项式朴素贝叶斯分类器来预测垃圾短信。训练数据是一组分为垃圾短信和非垃圾短信的短信。将pandas导入为pdraw_data=pd.read_csv('./asset/data.txt',sep='\t')raw_data.head()categorytext0hamGountiljurongpoint,crazy..Availableonly...1hamOklar...开玩笑wifuoni...2spam免费参加每周2场比赛以赢得足总杯决赛...3hamUdunsaysoearlyhor...Ucalreadythensay...4hamNah我不认为他去usf,他住在...为了实施unigram模型,首先我们标记文本。我们使用SMS中每个标记(词)对应的计数作为其特征(即词袋)。我们将每个SMS的特征和分类信息存储在字典中。deftokenize(sms):returnsms.split('')defget_freq_of_tokens(sms):tokens={}fortokenintokenize(sms):iftokennotin令牌:令牌[令牌]=1否则:令牌[令牌]+=1returntokensstraining_data=[]forindexinrange(len(raw_data)):training_data.append((get_freq_of_tokens(raw_data.iloc[index].text),raw_data.iloc[index].category))对于本实验,您需要使用add-1平滑实现多项式朴素贝叶斯分类器(即文件:submission.py中的multinomial_nb())。multinomial_nb()的输入参数是:training_data:存储为字典的预处理数据sms:test-sms(i.e.,您需要归类为垃圾邮件和/或非垃圾邮件的标记列表multinomial_nb()的返回值应该是短信是垃圾邮件的概率与短信是非垃圾邮件的概率之比。返回值大于1表示短信是垃圾邮件,反之亦然。例如,示例输出显示在下面给出的单元格中:我们如何测试您的实施...将submission_ans导入为submissionsms='Iamnotspam'print(submission.multinomial_nb(training_data,tokenize(sms)))0.2342767295597484测试环境为了测试,我们已经在测试环境中预先安装了必要的模块和/或库。您只能使用以下库:python:3.6.5pandas:0.19.2注意:您需要自己实现分类器。您不能在Lab3.WX中导入sklearn和/或任何其他库:codehelp
