Matlab KNN CLASSIFIER ERROR-学院项目
Matlab KNN CLASSIFIER ERROR-College Project
所以我有一个项目作为期末考试的一部分,我必须在其中创建和训练一些模型来检测基于数据挖掘和机器学习技术的恶意可执行文件。
我有一个包含 14998 个样本的数据集,这些样本分组在 14998x543(特征)的 两个表 上
和一个 14998x1(类 个样本)。
我写了一些数据排列代码,但是当我尝试在 knn 分类器上使用它时,我发现了一些奇怪的东西 errors.Hoping 这里有人可以提供帮助,因为我是 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
这些是以下错误...:
Error using statslib.internal.grp2idx (line 44) You cannot subscript a
table using linear indexing (one subscript) or multidimensional
indexing (three or more subscripts). Use a row subscript and a
variable subscript.
Error in grp2idx (line 28) [varargout{1:nargout}] =
statslib.internal.grp2idx(s);
Error in knnclassify (line 86) [gindex,groups] = grp2idx(group);
Error in PatternRegognitionLabProject (line 19) c=
knnclassify(testing,training,train_classes)
真的希望有人能解决这个问题,因为我绞尽脑汁试图解决这个问题。
提前致谢,
季米特里斯
结案
我看不出你的代码有什么问题。我已经在 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 函数混淆。查看您的数据的外观,看看数据的形状或类型是否与 expected/intended.
不同
祝你好运!
所以我有一个项目作为期末考试的一部分,我必须在其中创建和训练一些模型来检测基于数据挖掘和机器学习技术的恶意可执行文件。 我有一个包含 14998 个样本的数据集,这些样本分组在 14998x543(特征)的 两个表 上 和一个 14998x1(类 个样本)。
我写了一些数据排列代码,但是当我尝试在 knn 分类器上使用它时,我发现了一些奇怪的东西 errors.Hoping 这里有人可以提供帮助,因为我是 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
这些是以下错误...:
Error using statslib.internal.grp2idx (line 44) You cannot subscript a table using linear indexing (one subscript) or multidimensional indexing (three or more subscripts). Use a row subscript and a variable subscript.
Error in grp2idx (line 28) [varargout{1:nargout}] = statslib.internal.grp2idx(s);
Error in knnclassify (line 86) [gindex,groups] = grp2idx(group);
Error in PatternRegognitionLabProject (line 19) c= knnclassify(testing,training,train_classes)
真的希望有人能解决这个问题,因为我绞尽脑汁试图解决这个问题。 提前致谢, 季米特里斯
结案
我看不出你的代码有什么问题。我已经在 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 函数混淆。查看您的数据的外观,看看数据的形状或类型是否与 expected/intended.
不同祝你好运!