【发布时间】: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后面的数据集的实际标签吗?我认为这应该是confusionmat的group参数。该函数的重点是将实际标签与预测标签进行比较,以了解它们的比较方式。如果训练标签和预测标签不是基于相同的输入点,则它们之间没有关系 -
也许你没有使用标准术语,但是 AFAIK,在 ML 中,“测试数据”是应该有标签的数据,但你没有在训练中使用。这样,您可以在一组新数据中“测试”您的训练是否成功,您知道其中的预期答案。
标签: matlab machine-learning training-data confusion-matrix