سیستم تشخیص نفوذ با استفاده از داده کاوی
در این پروژه با استفاده از الگوریتم های هوش مصنوعی و روش های مختلف داده کاوی یک سیستم تشخیص نفوذ در متلب طراحی شده است
توسعه سیستم تشخیص نفوذ با ماشین بردار پشتیبان svm و درخت تصمیم decision tree روی دیتاست kdd
برای اجرای کد فایل main را باید اجرا کنید.
در فایل main روال برنامه به شکل زیر است.
function main()
% read data set
filename = ‘KDD.txt’;
[lable,data]=read_data(filename);
خواندن فایل دیتاست kdd از فایل متنی
% normalize dataset ; defuzzification values to use by svm
normal_data=normalize(data,’normal’);
نرمالسازی داده به منظور انجام فرایند یادگیری
% partitioning data
window_size = 1000;
بخش بندی داده ها به منظور استخراج بردارهای پشتیبان مبتنی بر روش مقاله
% train initial value
for i=1:41
train(1,i) = normal_data{1,i}(1,1);
end
label(1,1) = normal_data{1,42}(1,1);
% for every windows
for i=1:ceil(size(data{1,1},1)/window_size)
% extract idx of data to select vector samples
if((i*window_size) > size(data{1,1},1))
idx = ((i-1)*window_size)+1:size(data{1,1},1);
else
idx = ((i-1)*window_size)+1:(i*window_size);
end
i
% pre process data to qualified to train
[train,label] = preprocess(normal_data,train,label,idx);
پیش پردازش داده برای تبدیلل داده های از نوع cell به ماتریس
% train svm
SVMstruct = svmtrain(train,label,’Kernel_Function’,’rbf’);
اموزش svm
% extract support vectors values
idx=SVMstruct.SupportVectorIndices;
[train,label] = preprocess2(train,label,idx);
استخراج نمونه های بردار پشتیبان
end
% fuzzification class label to learn decition tree
for i=1:size(label,1)
if(label(i,1) == 1)
spec{i,1} = ‘normal’;
else
spec{i,1} = ‘abnormal’;
end
end
% feature labels
for i=1:41
a{1,i} = lable{1,i};
end
% train decition tree by only support vector samples
t = classregtree(train,spec,’names’,a)
% show the treee
view(t);
اموزش و نمایش درخت اموزش دیده مبتنی بر داده های بردار پشتیبان (نه همه ی داده ها)
% test
testidx = round(rand(100,1) * (size(data{1,1},1)-1))+1;
[test,label] = preprocess(normal_data,train,label,testidx);
% calculate confiution matrix
sfit = eval(t,test);
tp = 0;
tn = 0;
fp = 0;
fn = 0;
for i=1:size(sfit,1)
if(strcmp(sfit{i,1},’normal’))
if(label(i,1) == 1)
tp = tp +1;
else
fp = fp +1;
end
else
if(label(i,1) == 1)
fn = fn +1;
else
tn = tn +1;
end
end
end
محاسبه و نمایش ماتریس سردرگمی
tp
fp
tn
fn
% calculate accuracy
accuracy = (tp+tn)/(tp+tn+fp+fn)
disp(‘the end’);
end
خروجی برنامه
ماتریس سردرگمی
برای دریافت این پروژه میتوانید با شماره 09039549884 تماس بگیرید
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام متلب پروژه عضو شوید