【问题标题】:Sampling data in MATLAB在 MATLAB 中采样数据
【发布时间】:2012-11-13 03:55:32
【问题描述】:

我有两条数据。一个是实际的 fulldata,它是一个 49625x6 数字数据的数据集,另一个是该数据的索引,其 target_class 名为 Book2,即 49625x1。

Book2 有六个名称(字符串)一遍又一遍地重复以匹配 fulldata 数据集条目。我想使用 Book2 从 fulldata 中提取 1000 个样本,其中 1000 个样本中有 25% 是“蓝色”,75% 是“红色”,然后将其包含在一个名为 sampledata 的新子样本中。

如何在 MATLAB 中实现这一点?

伪代码:

从 Book2 中选择 250 个蓝色样本,不确定如何“选择”250 个随机“蓝色”样本 bluesample = indX(Book2, :)Book2(indX, :) 不确定。

从 Book2 中选择 750 个红色样本,再次不确定如何“选择”750 个随机“红色”样本 redsample = indX(Book2, ;)Book2(indX, :) 再次不确定。

将蓝色和红色样本合并到子样本中。

subsample = join(bluesample, redsample)

找到 subsample 的索引并从 fulldata 创建 sampledata:

sampledata = subsample(indX(fulldata), :) This line is probably wrong

这是两个数据集的图像:

Book2 中的每一行都与 fulldata 中的行匹配。我正在尝试使用 Book2 从 fulldata 中选择一定数量的“正常”和一定数量的“不正常”(是的,我知道它们没有恰当地命名)数据的能力,因为 Book2 是 fulldata 的索引和包含类标签。

所以就我的数据集而言,这样说可能更容易:

Choose 250 random samples of the string "normal." from Book2 and log the row number.
Choose 750 random samples of the string "not normal." from Book2 and log the row number.
Combine the two random samples of row numbers together.
Make a new dataset (1000x6) using the combined row numbers (above) of fulldata.

【问题讨论】:

  • 我没有尝试过任何东西 Ben :( 我不经常使用 matlab,所以只需要帮助。通常我会尝试,但我不知道如何使用循环等
  • 但我不知道如何使用循环等查找matlab教程,问题也有点模糊,这些表中的红色和蓝色字符串,也许给一些表格外观示例并显示您想要做什么
  • @Ben 不确定这是否为您清除了任何问题。我还提到 Book2 有 6 个“名称”,所以是的,它们是字符串。
  • 是的,这是对问题的一个很大的改变,现在更清楚了。

标签: matlab


【解决方案1】:

使用 strmatch 提取“正常”记录:

normIdx = strmatch('normal.', Book2);
normalSubset = fulldata(normIdx, :);

然后为了生成一个包含 250 个随机非重复整数的列表,我在“matlab 非重复随机整数列表”中搜索了 the first result

p = randperm(size(normalSubset , 1));
p = p(1:250)-1;

所以现在来获取你随机选择的 250 条正常记录

normalSample = normalSubset (p, :);

normalSample 将是 250 x 6。现在对“不正常”执行相同操作。得到一个notNormalSample (750 x 6) 然后合并得到 ​​p>

sample = [normalSample ; notNormalSample ]

所以在sample 中,所有法线都会出现在非法线之前,如果你想将它们混合使用randperm()

sample = sample(randperm(1000), :);

【讨论】:

  • 嗨,丹最后一行有一点错误,这只会选择 1000x1 而不是 1000x6。仍然接受了您的答案,您可能需要更正它以供其他人查看该问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 2012-03-01
  • 2015-07-01
  • 2017-02-23
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
相关资源
最近更新 更多