用Matlab分类。识别测试集中的类

时间:2011-12-21 07:18:09

标签: matlab dataset machine-learning

我的情况似乎微不足道,但我无法弄清楚。我在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值。这远非优雅,必须有更好的东西。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

快速搜索“帮助数据集”等并没有为我找到明确的答案。我的猜测是它们按照unique()或类似的方式排序。您可能需要联系Mathworks的技术支持以确定。