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

本文介绍如何利用朴素贝叶斯算法构建文本分类器。在项目中,面对url数据,目标是根据url预测文件类型。首先,手动标记数据并创建数据集,接着建立影响文件类型的词汇表(dictionary),这是决定模型精度的关键步骤。然后,将数据划分为训练集(8000条)和测试集(1000条)进行模型训练和评估。

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

朴素贝叶斯算法,对于文本分类器是较为适用的。楼主在做项目的时候,有一批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);
end

O1 = 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);
end
C2=O1.predict(test_data);
cMat2=confusionmat(test_label, C2)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值