在Matlab中生成数据集

时间:2014-05-21 08:09:47

标签: matlab dataset generator feature-selection synthetic

我想问一下如何在Matlab中生成数据集。我需要它来测试高维数据的特征选择算法......数据集应该是合成的,多变量的并且包含交互特征。 类似于MONKS问题的综合数据集可在http://archive.ics.uci.edu/ml/datasets/MONK%27s+Problems上找到....遗憾的是,我不知道如何根据我的需要可视化/生成和修改数据。目标是运行检测交互特征的算法。 我将非常感谢你的回复。

1 个答案:

答案 0 :(得分:0)

我不确定这是你在寻找什么,但如果我需要这样做,我将首先生成匿名函数和通用变量名,我可以在数据集中随机应用。

例如,您可以生成数据集:

myData = rand(100,6);

并创建一些包含相互依赖性的函数

interact = @(x) x*x;
interact2 = @(x) x*(x-1);

然后创建一个随机的逻辑分布     y =圆(rand(100,1)); %(100行随机0' s或1')

浏览数据集并仅在y为真的行上使用interact函数     dataset(y == 1,:) = interact(dataset(y == 1,:));

如果您愿意,可以使用您定义的其他交互功能重复上述操作。这可能是有用的,这样你就可以避免行依赖(见下文),因此可以按顺序生成一些数据集,即    dataset2(y == 1,:) = interact2(dataset(y == 1,:));

可以对变量采用类似的方法(在示例集中,它显示了一些分类变量)。

myVariable = repmat('data', 100, 1);
listofvariables = genvarname(cellstr(myVariable));

y = round(rand(100,1));     % logical index for the data

随机选择要重复的通用变量     applyvar = round(rand(1,1)* 100);     selectedVariable = listofvariables(applyvar);

用重复的变量替换变量列表的索引     listofvariables(y == 1)= selectedVariable;

按照您选择的某种顺序整理数据集

    [cellstr(num2str(dataset(:,1))) listofvariables cellstr(num2str(dataset(:,2)) cellstr(num2str(dataset2(:,2))]