【发布时间】:2014-02-08 18:57:57
【问题描述】:
如何从matlab的数据集中随机、公平地选择一些数据?
当我们使用 randperm 函数选择数据时,它们是随机且公平的?
【问题讨论】:
-
是的,我认为你没问题。示例:
m = 6; Data = magic(m) shuffle = randperm(m); Data = Data(shuffle, :);这样你就可以打乱你的行了。
如何从matlab的数据集中随机、公平地选择一些数据?
当我们使用 randperm 函数选择数据时,它们是随机且公平的?
【问题讨论】:
m = 6; Data = magic(m) shuffle = randperm(m); Data = Data(shuffle, :); 这样你就可以打乱你的行了。
正如您已经建议的那样,假设您不想重复,则可以使用 randperm 从 n 中选择均匀随机选择的行。
例子:
dataSet = rand(1000,4);
idx = randperm(size(dataSet,1),10)
dataSet(idx,:)
【讨论】:
如果你有统计工具箱,你可以使用randsample:
sample = randsample(data,k);
从向量data 中的值中随机抽取均匀采样的k 值,无需替换。有关其他选项,请参见上面的链接。
与randperm的等效代码:
ind = randperm(numel(data));
sample = data(ind(1:k));
是的,这些方法中的任何一种都提供随机样本,是的,它们公平。我假设“公平”是指“统一”:data 的每个条目都以相同的概率被选中。
【讨论】:
任何使用均匀分布的东西都是“公平的”。因为输出应该在特定范围内随机分布。例如matlab中的rand函数。
【讨论】: