kddcup99数据集预处理matlab,关于kddcup99取数据后,用svm算法跑后检测率依旧很高(95%以上...

博主在数据库中使用SQL语句按比例选取不同类型的样本数据,进行混合并划分为训练集和测试集,以进行SVM分类器的训练。在SVM程序中,对数据进行了预处理和归一化,但发现模型的检测率始终过高且结果重复,怀疑数据抽取环节可能存在问题。尽管尝试过重新抽样,问题仍未解决。对比其他数据集的表现,博主怀疑可能是数据获取或处理方式导致的。寻求帮助以改进模型的准确性和稳定性。
摘要由CSDN通过智能技术生成

本帖最后由 酥醉的飓风 于 2014-3-12 21:50 编辑

我已经建立好数据库,也已经把字符串update成数字,第42列属性显示normal的update成1,

其他的表示dos,probe,r2l,u2r的依次update成2,3,4,5;

随机取的时候,sql里用的newid()函数,sql语句如下:

select top 5100 * from [kddtest].[dbo].[kddcup.data] where [列 41]=1 order by newid();

select top 600 * from [kddtest].[dbo].[kddcup.data] where [列 41]=2 order by newid();

select top 800 * from [kddtest].[dbo].[kddcup.data] where [列 41]=3 order by newid();

select top 60 * from [kddtest].[dbo].[kddcup.data] where [列 41]=4 order by newid();

select top 120 * from [kddtest].[dbo].[kddcup.data] where [列 41]=5 order by newid();

我做的先是把normal分别和dos,probe,r2l,u2r的数据单独混合,然和其中一部分作为训练集,一部分作为测试集例如2500条normal数据和800条probe数据混合组成3300条总的数据,训练集2000(normal1500条,probe500条),测试集1300(normal1000,probe300条)

svm程序如下:

clear all;close all;  clc;

%% probe

A=xlsread('C:\Users\HURRICANE\Desktop\kdd_all_data\kdd_all_data\kddprobe.csv');

B=xlsread('C:\Users\HURRICANE\Desktop\kdd_all_data\kdd_all_data\kddnormal.csv');

C=zeros(2000,42);

D=zeros(1300,42);

C(1:500,:)=A(1:500,:);

C(501:2000,:)=B(2001:3500,:);

D(1:300,:)=A(501:800,:);

D(301:1300,:)=B(3501:4500,:);

train_X=C(:,1:end-1);

train_label=C(:,end);

test_X=D(:,1:end-1);

test_label=D(:,end);

%% 归一化处理(一)

[train_x,PS]=mapminmax(train_X');

train_x=train_x';

test_x=mapminmax('apply',test_X',PS);

test_x=test_x';

model = svmtrain(train_label,train_x);

[predict_label,accurancy]=svmpredict(test_label,test_x,model);

检测率结果老是过高(也是98%多,这是没进行参数优化的),而且运行n次,结果都相同的。我从数据库用同样的方法重取过数据,不过结果依然不理想。我用过一个乳腺癌的数据,每次运行的结果都是不同的,在一个数值小范围波动,结果比较理想,间接证明程序应该没问题。我现在怀疑去数据取得有问题,小弟已经查过各种资料,真的没辙了。。。。

求各路大神帮忙看一看,提点意见

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值