Генерация набора данных в Matlab

Я хотел спросить, как создать набор данных в Matlab. Мне это нужно для тестирования алгоритмов выбора функций на многомерных данных... Набор данных должен быть синтетическим, многомерным и содержать ВЗАИМОДЕЙСТВУЮЩИЕ функции. Синтетические наборы данных, такие как задача MONKS, доступны на http://archive.ics.uci.edu/ml/datasets/MONK%27s+Problems .... к сожалению, я понятия не имею, как визуализировать/генерировать и изменять данные в соответствии с моими потребностями. Цель состоит в том, чтобы запустить алгоритм, который обнаруживает взаимодействующие функции. Буду очень благодарен за дельный ответ.


person user3659752    schedule 21.05.2014    source источник


Ответы (1)


Я не уверен, что это то, что вы ищете, но если бы мне нужно было это сделать, я бы начал с создания анонимных функций и общих имен переменных, которые я мог бы применять случайным образом в наборе данных.

Например, вы можете создать набор данных:

myData = rand(100,6);

и создайте несколько функций, которые включают взаимозависимости

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

затем создайте случайное логическое распределение y = round(rand(100,1)); %(100 строк случайных 0 или 1)

просмотреть набор данных и использовать функцию взаимодействия только для строк, где y является истинным набор данных (y == 1,:) = взаимодействие (набор данных (y == 1,:));

повторите вышеуказанное с другими функциями взаимодействия, которые вы определяете, если хотите. вероятно, было бы полезно сделать это, чтобы вы могли избежать зависимостей строк (см. Ниже), поэтому можно было бы создать несколько наборов данных по порядку, то есть набор данных2 (y == 1,:) = взаимодействовать2 (набор данных (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); выбранная переменная = список переменных (applyvar);

замените индексы списка переменных вашей повторяющейся переменной listofvariables(y == 1) = selectedVariable;

собрать набор(ы) данных в каком-то порядке по вашему выбору

    [cellstr(num2str(dataset(:,1))) listofvariables cellstr(num2str(dataset(:,2)) cellstr(num2str(dataset2(:,2))]
person Fox    schedule 21.05.2014