我遇到了一个看似微不足道的情况,但我无法弄清楚。我在 Matlab 中有一个具有分类值的数据集。例如:
Outlook,Temperature,Humidity,Windy,Play
sunny,hot,high,false,no
sunny,hot,high,true,no
overcast,hot,high,false,yes
rainy,mild,high,false,yes
rainy,cool,normal,false,yes
rainy,cool,normal,true,no
overcast,cool,normal,true,yes
为了使用 ClassificationTree(或机器学习中的其他算法),我需要将数据集转换为矩阵。我使用(假设data包含数据集):
double(data)
它将数字分配给值。假设雨天=1,阴天=2,晴天=3,依此类推。我训练了 ClassificationTree 并且它工作得很好。但这是我的问题。如果我想根据测试数据进行预测:
overcast,cool,normal,false,yes
我需要知道 double() 分配给每个类别的数字。即阴=2。在测试集上使用 double() 不起作用,因为不能保证 double() 分配的数字与分配给训练数据集的数字相同。
我发现了一种非常扭曲的方法。例如,对于 Outlook:
d = zeros(size(test));
ls = getlevels(training.Outlook);
n = size(ls,2);
for i = 1:n
d(test.Outlook == ls(i),1) = i;
end
这会正确分配数字,因为我检查了在训练数据集中找到的每个 Outlook 值。这远非优雅,必须有更好的东西。
感谢任何帮助。
最佳答案
快速搜索“帮助数据集”等并没有为我找到明确的答案。我的猜测是它们是按照 unique() 或类似的东西排序的。您可能需要联系 Mathworks 的技术支持来确定。
关于matlab - 使用 Matlab 进行分类。识别测试集中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586268/