У меня есть много цветных картинок, сохраненных в файле, и я могу перебирать изображения и разделять их на 80% обучающего набора и 20% испытательного набора. В данный момент я использую только 10 изображений, 8 из которых являются тренировочными, а 2 - для тестирования. Мне удалось разделить эти изображения на два набора. Я попытался пометить изображения, используя данные, которые я хочу передать в алгоритм машинного обучения kNN, используя fitcknn в MATLAB.
Я пытался передавать данные параметров различными способами, такими как uint8, ячейки, хранилища данных, но продолжаю получать ошибки. Я проверил документацию MATLAB (https://uk.mathworks.com/help/stats/fitcknn.html) и до сих пор не до конца понимаю, через что пройти.
folder = 'C:\Users\jack\OneDrive\Desktop\images\*png';
datastore = imageDatastore(folder);
k = 5;
partStores{k} = [];
for i = 1:k
temp = partition(datastore, k, i);
partStores{i} = temp.Files;
end
idx = crossvalind('Kfold', k, k);
for i = 1:k
test_idx = (idx == i);
train_idx = ~test_idx;
test_Store = imageDatastore(partStores{test_idx});
train_Store = imageDatastore(cat(1, partStores{train_idx}));
end
x_train = read(train_Store);
training = imresize(x_train, [120 120]);
label = read(datastore);
full_set = imresize(label, [120 120]);
% converting data to cell to pass to knn
newset = num2cell(training);
knn = fitcknn(train_Store, gTruth);
В приведенном выше коде kNN совершенно неверен, так как я не уверен, что передать.
Я думаю, что главная проблема, с которой я сталкиваюсь, - это передача ярлыков в kNN, поскольку я не уверен, как именно это сделать, и врезался в кирпичную стену в минуту. Был бы очень признателен, если бы кто-нибудь мог пролить свет на это. Спасибо!