Ciao a tutti.
Ho un dubbio in un esercizio. Questo è il testo dell'esame:
//
Un algoritmo di classificazione è un algoritmo di machine learning in grado di assegnare un’etichetta a un
oggetto sulla base della conoscenza di come sono fatti altri oggetti simili. Si scriva un programma C in grado di
implementare l’algoritmo di classificazione 1-NN.
Il programma riceve in ingresso due file <train> e <test> i cui nomi sono passati come argomento sulla
linea di comando:
<train> - è un file contenente un insieme di N oggetti (uno per riga) con la relativa etichetta. Questo file è
utilizzato per insegnare al classificatore a riconoscere gli oggetti ignoti. Ogni riga del file contiene il nome
dell’oggetto rappresentato come una stringa lunga al massimo 5 caratteri, un insieme di M numeri reali F1..Fm
seguiti da un numero intero L. Il carattere spazio è usato per separare i vari elementi. Gli M numeri reali
sono la rappresentazione di un oggetto mentre il numero intero L rappresenta l’etichetta dell’oggetto.
<test> - è un file contenente un insieme di oggetti da classificare. Il formato è analogo a quello del file
<train> ma il numero di righe NON E’ NOTO A PRIORI.
Si assuma che i valori di M ed N siano noti a priori e definiti nel codice del programma tramite una direttiva
define.
Il programma deve predire l’etichetta di ogni oggetto O contenuto nel file <test> utilizzando il seguente
criterio:
?
Calcolare la distanza euclidea tra O e ogni oggetto T contenuto nel file <train>.
?
L’etichetta assegnata a O è l’etichetta dell’oggetto in T più vicino a O.
Per ogni classificazione effettuata il programma deve stampare sullo schermo un messaggio che indichi il
nome dell’oggetto, l’etichetta predetta per l’oggetto e la relativa etichetta corretta (così come riportata nel file
<test>).
Infine il programma deve stampare su schermo l’accuratezza del classificatore calcolata come il rapporto tra il
numero di etichette predette correttamente diviso per il numero di oggetti classificati. //
Nelle soluzioni dopo aver aperto il file <train>, apre un for e la prima istruzione è: fscanf(trainfile,"%*s"). Non capisco a cosa serva l'istruzione. Sapete aiutarmi??