【问题标题】:Confusion matrix error with less test data than training data测试数据少于训练数据的混淆矩阵错误
【发布时间】:2020-10-23 08:27:04
【问题描述】:

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

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;

但我得到了错误:

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

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

【问题讨论】:

  • 这个错误有什么不清楚的地方? confusionmat 期望输入具有相同数量的行,而您没有提供这些行数...没有 minimal reproducible example 这是无法回答的
  • @wolfie,我明白了。但我不能提供它,因为测试数据没有真正的标签,并且测试数据的标签是从算法中预测的。该组是训练数据的标签(true),即 1000)和组帽子(为测试数据预测的标签,它是 500)
  • 你有predictedLabel后面的数据集的实际标签吗?我认为这应该是confusionmatgroup 参数。该函数的重点是将实际标签与预测标签进行比较,以了解它们的比较方式。如果训练标签和预测标签不是基于相同的输入点,则它们之间没有关系
  • 也许你没有使用标准术语,但是 AFAIK,在 ML 中,“测试数据”是应该有标签的数据,但你没有在训练中使用。这样,您可以在一组新数据中“测试”您的训练是否成功,您知道其中的预期答案。

标签: matlab machine-learning training-data confusion-matrix


【解决方案1】:

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

返回由已知组和预测组

确定的混淆矩阵 C

相同数据的已知结果和预测结果

以这个部分伪代码为例,详见 cmets

% 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 ) 

【讨论】:

  • 输入数据有两部分:1.有真实标签,2.没有真实标签。实际标签 = testData(:,1);我没有,算法预测它(半监督)
  • 那么混淆矩阵对你来说不是任何相关的衡量标准。它旨在将您的已知结果与来自相同数据的预测进行比较,您需要执行我上面显示的操作,并提供一些具有已知标签的训练数据以用于您的混淆矩阵。
猜你喜欢
  • 2018-07-26
  • 1970-01-01
  • 2018-02-04
  • 2021-07-02
  • 2022-01-04
  • 2016-07-13
  • 2018-11-08
  • 1970-01-01
  • 2012-09-11
相关资源
最近更新 更多