基于朴素贝叶斯文本的分类器构造

来源:互联网 发布:tracert 端口 编辑:程序博客网 时间:2024/05/16 18:18

朴素贝叶斯算法,对于文本分类器是较为适用的。楼主在做项目的时候,有一批url数据需要处理。需要给定url,给出相应的文件类型。

首先要人工贴标签,构造数据集合。数据集合如图所示。

然后,要人工构造dictionary,也就是你认为会影响文件类型的单词,如“儿歌”,“游戏”等,这个地方,是影响模型精度的关键,需要花费很大的功夫不断调试。而且,往往dictionary向量要很大才能获得理想结果。

将数据集合分为训练集,测试集。这里取了8000条做训练集,1000条做测试集。

O1 = fitNaiveBayes(train_data,train_label,'Distribution', 'mn'); 
这句便是利用训练集训练模型。
利用O1.predice()函数,输入相应训练,测试集,便可获得结果。

clear;clc;%程序需要改的接口:数据,dictionary,函数的distribution参数load('typeAll.mat');load('urlAll.mat');dictionary=['erge  ';'zuofan';'youxi ';'yizhi ';'wenxue';'shipin';'youxi ';'yinpin';'zuofan';'maoxia';'pintu ';'ertong';'tianse';'zhongw';'gequ  ';'shipin';'donghu';'zhutiq';'yingwe';'gequ  ';'tonghu';'yuyan ';'baike ';'huiben';'gushi ';'FLASH ';'hanzi ';'bihua ';'chengy';'tongya';'changs';'jingwu';'kantu ';'xiaoxu';'kejian';'wenxue';'pinyin';'zimu  ';'hanzi ';'zidian';'duihua';'duwu  ';'tushu ';'fudao ';'minjia';'yingyu';'shuang';'duihua';'duwu  ';'pintu '];%字典词条库,不够的必须用空格补齐[row,column]=size(dictionary);%row代表字典中有几个单词(特征向量的数量),column代表单词固定长度%生成100个随机数做训练集b=randperm(9000);%生成1到100的随机排列a=b(1:8000);train_label=typeAll(a);train_url=urlAll(a);train_data=zeros(8000,row);%for i=1:8000    train_data(i,:)=text2vec(train_url(i),dictionary,6);endO1 = fitNaiveBayes(train_data,train_label,'Distribution', 'mn'); C1=O1.predict(train_data);cMat1 = confusionmat(train_label, C1) %自测试准确率:93%a=b(8001:9000);%取剩下的1000个做测试集test_label=typeAll(a);%1000*1的胞体test_url=urlAll(a);%1000*1的胞体test_data=zeros(1000,row);%for i=1:1000    test_data(i,:)=text2vec(test_url(i),dictionary,6);endC2=O1.predict(test_data);cMat2=confusionmat(test_label, C2)




0 0