Po pierwsze, jest to z pewnością praca domowa (więc proszę nie pobierać pełnych próbek kodu). To powiedziawszy ...Jak korzystać z nienadzorowanych technik uczenia się na zbiorze danych, a następnie oznaczać klastry?
Potrzebuję przetestować nienadzorowany algorytm obok nadzorowanego algorytmu, używając przybornika sieci neuronowej w Matlabie. Zbiorem danych jest UCI Artificial Characters Database. Problem polega na tym, że miałem dobry tutorial na temat nadzorowanych algorytmów i zostałem pozostawiony bez nadzoru.
Więc wiem, jak utworzyć mapę samoorganizującą się przy użyciu selforgmap
, a następnie trenuję ją przy użyciu train(net, trainingSet)
. Nie rozumiem, co robić dalej. Wiem, że zgrupował dane, które przekazałem (mam nadzieję) 10 klastrów (po jednym na każdą literę).
następnie dwa pytania:
- Jak można następnie oznaczyć klastrów (biorąc pod uwagę, że mam wzorzec porównawczy)?
- Czy staram się zmienić to w nadzorowany problem z nauką, kiedy to robię?
- Jak utworzyć matrycę zamieszania na (innym) zestawie testowym w celu porównania z nadzorowanym algorytmem?
Myślę, że brakuje tu czegoś konceptualnego lub żargonowego - wszystkie moje poszukiwania pochodzą z nadzorowanych technik uczenia się. Punkt w dobrym kierunku byłby bardzo doceniany. Moje istniejący kod jest poniżej:
P = load('-ascii', 'pattern');
T = load('-ascii', 'target');
% data needs to be translated
P = P';
T = T';
T = T(find(sum(T')), :);
mynet = selforgmap([10 10]);
mynet.trainparam.epochs = 5000;
mynet = train(mynet, P);
P = load('-ascii', 'testpattern');
T = load('-ascii', 'testtarget');
P = P';
T = T';
T = T(find(sum(T')), :);
Y = sim(mynet,P);
Z = compet(Y);
% this gives me a confusion matrix for supervised techniques:
C = T*Z'