Matlab KNN CLASSIFIER ERROR-大学项目

时间:2017-11-18 19:21:51

标签: matlab knn pattern-recognition

所以我有一个项目作为期末考试的一部分,我必须创建和训练一些模型来检测基于数据挖掘和机器学习技术的恶意可执行文件。 我有一个14998个样本的数据集,分组在两个表的14998x543(特征) 和一个14998x1(这些样本的类别)。

我写了一些数据安排代码但是当我尝试在knn classiffier上使用它时,我得到了一些奇怪的错误。希望有人在这里可以帮助我作为matlab语法的新手。

这是我的代码:

clear all

close all

clc

load ('C:\Users\Ζαρο-PC\Documents\MATLAB\PatRec Project\DataMist.mat');   

load ('C:\Users\Ζαρο-PC\Documents\MATLAB\PatRec Project\DataMistClasses.mat');;    


inds= randperm(size(Dataset,1));

training = Dataset(inds(1:10000),:);

train_classes = DatasetMistClasses(inds(1:10000),:);

testing = Dataset(inds(10001:end),:);

test_classes = DatasetMistClasses(inds(10001:end),:);


c= knnclassify(testing,training,train_classes);


cp = classperf(c,test_classes);

cp.CorrectRate

这些是以下错误......:

  

使用statslib.internal.grp2idx时出错(第44行)你不能下标a   表使用线性索引(一个下标)或多维   索引(三个或更多下标)。使用行下标和a   变量下标。

     

grp2idx中的错误(第28行)[varargout {1:nargout}] =   statslib.internal.grp2idx(一个或多个);

     

knnclassify错误(第86行)[gindex,groups] = grp2idx(group);

     

PatternRegognitionLabProject中的错误(第19行)c =   knnclassify(测试,训练train_classes)

真的希望有人解决这个问题,因为我试图修复它,因此我的大脑被打开了。 提前致谢, 迪米瑞斯

CASE CLOSED

1 个答案:

答案 0 :(得分:0)

我看不出你的代码有什么问题。我用Matlab 2015a中的随机数作为数据再现了你的例子,它运作正常:

Dataset = rand(14998, 543);
DatasetMistClasses = randi(2, 14998, 1);

inds = randperm(size(Dataset,1));
training = Dataset(inds(1:10000), :);
train_classes = DatasetMistClasses(inds(1:10000), :);

testing = Dataset(inds(10001:end), :);
test_classes = DatasetMistClasses(inds(10001:end), :);

c = knnclassify(testing,training, train_classes);

cp.CorrectRate

>> cp
                        Label: ''
                  Description: ''
                  ClassLabels: [2x1 double]
                  GroundTruth: [4900x1 double]
         NumberOfObservations: 4900
               ControlClasses: 2
                TargetClasses: 1
            ValidationCounter: 1
           SampleDistribution: [4900x1 double]
            ErrorDistribution: [4900x1 double]
    SampleDistributionByClass: [2x1 double]
     ErrorDistributionByClass: [2x1 double]
               CountingMatrix: [3x2 double]
                  CorrectRate: 0.511632653061225
                    ErrorRate: 0.488367346938776
              LastCorrectRate: 0.511632653061225
                LastErrorRate: 0.488367346938775
             InconclusiveRate: 0
               ClassifiedRate: 1
                  Sensitivity: 0.517758484609313
                  Specificity: 0.505071851225697
      PositivePredictiveValue: 0.528393072895691
      NegativePredictiveValue: 0.494414563508482
           PositiveLikelihood: 1.046128586324198
           NegativeLikelihood: 0.954797845535033
                   Prevalence: 0.517142857142857
              DiagnosticTable: [2x2 double]

>> cp.CorrectRate

ans =

   0.511632653061225

也许你正在使用的数据类型正在弄乱knn函数。查看数据的外观,看看数据的形状或类型是否与预期/预期不符。

祝你好运!