Классификация с Matlab.Распознать классы в тестовом наборе - PullRequest
1 голос
/ 21 декабря 2011

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

Outlook,Temperature,Humidity,Windy,Play
sunny,hot,high,false,no
sunny,hot,high,true,no
overcast,hot,high,false,yes
rainy,mild,high,false,yes
rainy,cool,normal,false,yes
rainy,cool,normal,true,no
overcast,cool,normal,true,yes

Чтобы использовать ClassificationTree (или другой алгоритм в машинном обучении), мне нужно преобразовать набор данных в матрицу.Я использую (при условии, что data содержит набор данных):

double(data)

, который присваивает значения значениям.Допустим, дождливый = 1, пасмурный = 2, солнечный = 3 и так далее.Я тренирую ClassificationTree, и он отлично работает.Но вот моя проблема.Если я хочу прогнозировать данные теста:

overcast,cool,normal,false,yes

Мне нужно знать числа, которые удваиваются (), присвоенные каждой из категорий.то есть пасмурно = 2.Использование double () в тестовом наборе не работает, потому что нет гарантии, что числа, присвоенные double (), совпадают с числами, назначенными для набора данных training .

Я нашелдействительно извращенный способ сделать это.Например, для Outlook:

d = zeros(size(test));
ls = getlevels(training.Outlook);
n = size(ls,2);
for i = 1:n
    d(test.Outlook == ls(i),1) = i;
end

, который правильно присваивает номера, потому что я проверяю каждое из значений для Outlook, найденных в наборе данных training .Это далеко не элегантно, и должно быть что-то лучше.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 21 декабря 2011

Быстрый поиск по «справочному набору данных» и т. Д. Не дал мне однозначного ответа.Я предполагаю, что они упорядочены согласно unique () или что-то подобное.Вы можете связаться со службой технической поддержки Mathworks, чтобы быть уверенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...