У меня есть ситуация, которая кажется тривиальной, но я не могу понять это.У меня есть набор данных в 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 .Это далеко не элегантно, и должно быть что-то лучше.
Любая помощь приветствуется.