Matlab 测试数据少于训练数据的混淆矩阵错误

Matlab 测试数据少于训练数据的混淆矩阵错误,matlab,machine-learning,training-data,confusion-matrix,Matlab,Machine Learning,Training Data,Confusion Matrix,我的模型精度计算有问题。我使用了下面的代码: y_train = [ 1 1 1 4 4 3 3 5 5 5 ]; % true labels for x_train %x_test : has no true labels. predictedLabel=[ 1 2 3 4 5 ]; % predicted labels for x_test group=y_train ; % 10 grouphat=predictedLabel; % for test 5 test dat

我的模型精度计算有问题。我使用了下面的代码:

y_train = [ 1  1  1  4  4  3  3  5 5 5 ]; % true labels for x_train
%x_test : has no true labels. 
predictedLabel=[ 1 2 3 4 5 ]; % predicted labels for x_test

group=y_train ; % 10
grouphat=predictedLabel; % for test 5 test data
C=confusionmat(group,grouphat);
Accuracy = sum ( diag (C)) / sum (C (:)) ×100;
但我得到了一个错误:

使用confusionmat时出错(第75行)
G和GHAT需要有相同数量的行


由于测试数据大于或小于列车,我是否会得到此错误?测试数据没有真正的标签(半监督学习)。

您的训练标签和预测标签基于不同的输入,因此在混淆矩阵中比较它们是没有意义的。从:

返回由已知组和预测组确定的混淆矩阵C

i、 e.相同数据的已知和预测结果

以这个部分伪代码为例,详细信息请参见注释

% split your input data
trainData = data(1:100, :);  % Training data
testData = data(101:120, :); % Testing data (mutually exclusive from training)
% Do some training (pseudo-code, not valid MATLAB)
% ** Let's assume that the labels are in column 1 **
model = train( trainData(:,1), trainData(:,2:end) );
% Test your model on the input data, excluding the actual labels in column 1
predictedLabels =  model( testData(:,2:end) );
% Get the actual labels from column 1
actualLabels = testData(:,1);
% Note that size(predictedLabels) == size(actualLabels)
% Now we can do a confusion matrix
C = confusionmat( actualLabels, predictedLabels ) 

这个错误有什么不清楚的地方
confusionmat
希望输入具有相同的行数,而您没有提供这些行数。。。如果没有一个unanswerable@wolfie,我明白。但是我不能提供它,因为测试数据没有真正的标签,并且测试数据的标签是根据算法预测的。对于1000)的列车数据,组为标签(true)和组hat(对于测试数据,预测的标签为500),您是否在
predictedLabel
后面有数据集的实际标签?我认为这应该是
composionmat
参数。该函数的作用是将实际标签与预测标签进行比较,以查看它们之间的比较情况。如果训练标签和预测标签不基于相同的输入点,则它们之间没有关系。可能您没有使用标准术语,但在ML中,“测试数据”是应该有标签的数据,但您没有在训练中使用。这样,你就可以在一组新的数据中“测试”你的训练是否成功,你知道预期的答案。有真实的标签,2。没有真正的标签。实际标签=测试数据(:,1);我没有它,算法预测它(半监督),那么混淆矩阵对你来说不是任何相关的度量。它是为了比较你的已知结果和来自相同数据的预测,你需要做我上面展示的事情,并拿出一些带有已知标签的训练数据,用于你的混淆矩阵。