Ciao, come ha detto Gann Bierner, questo è un problema di classificazione. Il migliore algoritmo di classificazione per i tuoi bisogni che conosco è l'algoritmo di Ross Quinlan. È concettualmente molto facile da capire.
Per implementazioni standard degli algoritmi di classificazione, la soluzione migliore è Weka. http://www.cs.waikato.ac.nz/ml/weka/. Ho studiato Weka ma non l'ho usato, perché l'ho scoperto un po 'troppo tardi.
Ho utilizzato un'implementazione molto più semplice denominata JadTi. Funziona piuttosto bene per i set di dati più piccoli come il tuo. L'ho usato parecchio, quindi posso tranquillamente dirlo. JadTi sono disponibili all'indirizzo:
http://www.run.montefiore.ulg.ac.be/~francois/software/jaDTi/
Detto tutto questo, la vostra sfida sarà la costruzione di un'interfaccia utilizzabile su web. Per fare ciò, il set di dati sarà di uso limitato. Il set di dati funziona fondamentalmente sulla premessa che si dispone già del set di allenamento e si alimenta il nuovo set di dati di test in un unico passaggio e si ottiene immediatamente la/le risposta/e.
Ma la mia applicazione, probabilmente anche la vostra, è stata una scoperta passo-passo degli utenti, con funzionalità per andare avanti e indietro sui nodi dell'albero decisionale.
Per creare un'applicazione del genere, ho creato un documento PMML dal mio set di formazione e creato un motore Java che attraversa ogni nodo dell'albero chiedendo all'utente di fornire un input (testo/radio/elenco) e utilizzare i valori come input per il prossimo possibile predicato del nodo.
Lo standard PMML può essere trovato qui: http://www.dmg.org/ Qui è necessario solo TreeModel. NetBeans XML Plugin è un buon editor compatibile con lo schema per la creazione di PMML. Altova XML può fare un lavoro migliore, ma costa $$.
È anche possibile utilizzare un RDBMS per archiviare il set di dati e creare automaticamente il PMML! Non l'ho provato
Buona fortuna per il tuo progetto, sentiti libero di farmi sapere se hai bisogno di ulteriori input.
+1: per contrastare la downvote: questo sembra una domanda interessante. –
@ Jim Ferrans - Grazie Jim! –
Diagonoising cosa? Se stai tentando di diagnosticare problemi in un programma, ti imbatterai nel problema dell'arresto. – monksy