2012-07-19 60 views
2

嗨我有一个数据集可以叫它dataset A,这个数据集包含500x10个样本。我有另外一个dataset B这是每个这些行的类标签。如何挑选一个百分比的数据matlab

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

等等...

我想选择的蓝色和红色,从数据集中的百分比可以称之为percentOfA,并有对应于从数据组B其他数据集,让我们把它叫做ResultOfA这是刚刚匹配颜色从A.

choosen颜色的百分比因此,新的数据集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%的红色。

+0

如何随机挑选?另外,75%的所有蓝色标签或只有75%的行要选择?你想要挑选多少行? – chaohuang 2012-07-19 13:34:55

+0

@ chaohuang是随机选取数据集A中蓝色标签和相应行的75%,随机选取25%的红色等。 – 2012-07-19 15:52:06

回答

0

使用Bioinformatics工具箱中的crossvalind函数进行研究,具体参考Group参数。通过不需要自己编写此功能,它将使您的生活变得更加轻松。

在你的情况,你会简单地做这样的事情:

percentage = 75; 
[train, test] = crossvalind('HoldOut', B, size(A, 1), percentage/100); 
percentOfA = A(train, :); 
resultOfA = B(train, :); 
+0

在这个例子中,它是如何知道25%和75%是什么? – 2012-07-19 07:13:18

+0

它随机挑选它们...... – Ansari 2012-07-19 07:15:25

+0

如果你已经知道它们是什么,那么你不需要所有这些。您可以简单地使用索引创建矢量,然后选择“A”和“B”矩阵的子集。 – Ansari 2012-07-19 07:16:05

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)); 

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

重复步骤选择red行。

HTH。

+0

不,这是不是什么即时通讯寻找B == 0.4,蓝色可能是变数我justed用0.4作为一个例子。数据集B与数据集A的顺序相同,我需要另一种方法。 – 2012-07-19 23:18:38

+0

@KirstyWhite如果blue是一个变量,那么您如何确定哪些行是蓝色的。 – chaohuang 2012-07-19 23:24:13

+0

由其indx。当我从另一个数据集中创建样本时,我将这些标签的indx创建为数字数据集,您可以在这里执行相同操作。 – 2012-07-21 07:04:59