matlab - 使用 Matlab 进行分类。识别测试集中的类

标签 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(或机器学习中的其他算法),我需要将数据集转换为矩阵。我使用(假设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/

相关文章:

matlab - 从 Matlab 绘图中检索 X 和 Y 值

r - 如何将大型数据集中的 NA 转换为 0 或 1?

python - 为什么 scikit-learn 中 SVC 上的 GridSearchCV 在给定相同输入的情况下会产生不同的概率?

python - 双向 LSTM 的问题

arrays - 二进制向量中的编号 0's and 1' s block

matlab - 在Matlab中看不到eps中的图像导出

java - m 文件(使用 matlab2014a)到 jar 文件转换不起作用

r - 如何将一列添加到数据集中,从 R 中的一列中添加值并从另一列中减去值?

c# - 将大量对象有效地匹配到 csv 标题映射

python-2.7 - "Unknown Label type"带 float 的决策树分类器