我的情况似乎微不足道,但我无法弄清楚。我在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(或机器学习中的其他算法),我需要将数据集转换为矩阵。我使用(假设数据包含数据集):
double(data)
为数字指定数字。假设rainy = 1,阴天= 2,晴天= 3,依此类推。我训练ClassificationTree,它工作正常。但这是我的问题。如果我想预测测试数据:
overcast,cool,normal,false,yes
我需要知道为每个类别分配的double()数字。即阴天= 2。在测试集上使用double()不起作用,因为无法保证double()指定的数字与分配给 training 数据集的数字相同。
我发现了一种非常扭曲的方式。例如,对于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
正确分配数字,因为我检查了我在 training 数据集中找到的每个Outlook值。这远非优雅,必须有更好的东西。
感谢任何帮助。
答案 0 :(得分:0)
快速搜索“帮助数据集”等并没有为我找到明确的答案。我的猜测是它们按照unique()或类似的方式排序。您可能需要联系Mathworks的技术支持以确定。