2

嗨,我有一个数据集,可以调用它dataset A,该数据集包含 500x10 个样本。我还有另一个dataset B是每一行的类标签。

Dataset A   | Dataset B 
1 0.2 | 0.3 = Green 
2 0.1 | 0.1 = Red 
3 0.2 | 0.4 = Blue

等等...

我想从数据集 A 中选择蓝色和红色的百分比,我们称之为 percentOfA 并有另一个数据集对应于数据集 B 中的数据集,我们称之为ResultOfA只是将颜色与从 A 中选择的颜色百分比相匹配。

所以新的数据集percentOfA看起来像:

1 0.2 | 0.4 
2 0.2 | 0.4 
3 0.2 | 0.4 
4 0.1 | 0.1 

75% 蓝色和 25% 红色,那么新的resultOfA将如下所示:

1 Blue.
2 Blue.
3 Blue.
4 Red. 

这在matlab中是如何实现的?

抱歉,我会尝试显示代码,但我在文档中找不到任何相关内容。

新编辑:

所以我有点迷失如何更好地解释这一点。数据集 B 包含 500x1 的颜色,蓝色、绿色、红色等

该数据集 B 与数据集 A 匹配,但数据集 A 包含构成这些颜色的数值。

我要做的就是使用数据集 B 选择 75% 的蓝色,它选择的那些会跟踪行号,然后使用这些行号从数据集 A 中取出数据并将其放入新数据集中.

因此,我的“新数据集”将只是数据集 A 的 75% 的蓝色和 25% 的红色(数值)。

4

2 回答 2

0

研究使用crossvalind生物信息学工具箱中的函数,特别是使用Group参数。无需自己编写此功能,这将使您的生活更轻松。

在您的情况下,您只需执行以下操作:

percentage = 75;
[train, test] = crossvalind('HoldOut', B, size(A, 1), percentage/100);
percentOfA = A(train, :);
resultOfA = B(train, :);
于 2012-07-19T07:05:32.613 回答
0

首先用于find确定blue行:idx=find(B==0.4);

blue然后随机选择这些行中的 75% :

n = numel(idx);
n75 = round(n*0.75);
r = randperm(n);
idx_blue = idx(r(1:n75));

对应blue的行A是:A_blue = A(idx_blue);

重复这些步骤以选择red行。

HTH。

于 2012-07-19T16:48:38.143 回答