前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习CS229:朴素贝叶斯&exercise6

机器学习CS229:朴素贝叶斯&exercise6

作者头像
kalifa_lau
发布2018-04-28 14:40:33
5920
发布2018-04-28 14:40:33
举报
文章被收录于专栏:kalifaの日々kalifaの日々

用朴素贝叶斯实现垃圾邮件分类器,解题代码如下

numTrainDocs = 700; numTokens = 2500; M = dlmread('F:\machine\ex6DataPrepared\train-features.txt', ' '); spmatrix = sparse(M(:,1), M(:,2), M(:,3), numTrainDocs, numTokens); train_matrix = full(spmatrix); y = dlmread('F:\machine\ex6DataPrepared\train-labels.txt', ' '); spam=find(y==1); nonspam=find(y==0); p_y=length(spam)/numTrainDocs; xofspam=zeros(numTokens,1); xofnonspam=zeros(numTokens,1); for i=1:numTokens xofspam(i,1)=sum(train_matrix(spam,i)); xofnonspam(i,1)=sum(train_matrix(nonspam,i)); end word=sum(train_matrix,2); fi_y1=(xofspam+1)./(sum(word(spam))+numTokens); fi_y0=(xofnonspam+1)./(sum(word(nonspam))+numTokens); %以上是train %以下是test numTestDocs = 260; M =dlmread('F:\machine\ex6DataPrepared\test-features.txt', ' '); test_spmatrix = sparse(M(:,1), M(:,2), M(:,3), numTestDocs, numTokens); test_matrix = full(test_spmatrix); test_result=zeros(numTestDocs,1); a=test_matrix*log(fi_y1); b=test_matrix*log(fi_y0); test_result=a>b; test_labels=dlmread('F:\machine\ex6DataPrepared\test-labels.txt', ' '); length(find(test_result-test_labels));

对公式理解的两处错误导致我改了一晚上bug,以及MATLAB使用不熟练导致代码冗余,一个矩阵运算或者一个函数就可以搞定的问题我就傻傻的写了for循环。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.09.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档