Matlab 朴素贝叶斯

Posted

技术标签:

【中文标题】Matlab 朴素贝叶斯【英文标题】:Matlab Naive Bayes 【发布时间】:2012-02-21 15:40:39 【问题描述】:

您好,我使用的是 KDD 1999 数据集,我希望在 matlab 中应用朴素贝叶斯算法。我想知道的是 kdd 数据集是一个 494021x42 的数据数组,如果您在下面的朴素贝叶斯代码中注意到“训练”和“目标类”:

training = [1;0;-1;-2;4;0]; % this is the sample data.
target_class = ['posi';'zero';'negi';'negi';'posi';'zero'];
    % This should have the same number of rows as training data but why?

% Training and Testing the classifier (between positive and negative)
test = 10*randn(10,1) % this is for testing. I am generating random numbers.
class  = classify(test,training, target_class, 'diaglinear')  
% This command classifies the test data depening on the given training data using a       Naive Bayes classifier

% diaglinear is for naive bayes classifier; there is also diagquadratic

我想知道的是与kdd数据集攻击类型相关的“Target_class”?

back dos
buffer_overflow u2r
ftp_write r2l
guess_passwd r2l
imap r2l
ipsweep probe
land dos
loadmodule u2r
multihop r2l
neptune dos
nmap probe
perl u2r
phf r2l
pod dos
portsweep probe
rootkit u2r
satan probe
smurf dos
spy r2l
teardrop dos
warezclient r2l
warezmaster r2l

或者目标类是“测试”集中包含的列标题?即

protocol_type: symbolic.
service: symbolic.
flag: symbolic.
src_bytes: continuous.
dst_bytes: continuous.
land: symbolic.
wrong_fragment: continuous.

【问题讨论】:

【参考方案1】:

如果您阅读任务定义,例如here,你会看到目标类确实是攻击类型。然而,训练集包含的攻击类型少于测试集。

这样做是为了现实主义,因为在您训练入侵检测算法之后,它必须能够处理与现有攻击类型接近但又不同的新攻击类型。

【讨论】:

奇怪,这是否意味着在训练集中的攻击类型数量较少的情况下,我可能无法从结论中得到任何有意义的信息?你会认为测试数据包含更少,而训练包含更多准确性。 如果你今天训练你的分类,你只能训练你迄今为止看到的攻击。可以合理地假设将来会出现新的攻击,可能与现有的攻击有关。检测这些也是你的任务!

以上是关于Matlab 朴素贝叶斯的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 朴素贝叶斯对象存储

MATLAB:具有单变量高斯的朴素贝叶斯

高斯朴素贝叶斯分类

朴素贝叶斯模型(NBM)在Matlab和Python的具体应用

Matlab基于朴素贝叶斯算法实现多分类预测(源码可直接替换数据)

Matlab基于朴素贝叶斯算法实现多分类预测(源码可直接替换数据)