2011-01-18 4 views
1

J'utilise l'algorithme C4.5 (peut être trouvé here)problème avec C4.5

Mes noms sont ici:

Play, Don't Play. 

Sky: Sunny, Cloudy, Rainy. 
AirTemp: Warm, Cold. 
Humidity: Normal, High. 
Wind: Strong, Weak. 
Water: Warm, Cool. 
Forecast: Same, Change. 

Et mes données est ici

Sunny, Warm, Normal, Strong, Warm, Same, Play 
Sunny, Warm, High, Strong, Warm, Same, Play 
Sunny, Warm, High, Strong, Cool, Change, Play 
Rainy, Cold, High, Strong, Warm, Change, Don't Play 

La sortie que je reçois de l'algorithme que je cours avec la commande

c4.5.exe -f v2 -v 1 > v2.r3 

est

C4.5 [release 8] decision tree generator Tue Jan 18 16:41:25 2011 
---------------------------------------- 

    Options: 
File stem <v2> 
Verbosity level 1 

Read 4 cases (6 attributes) from v2.data 

4 items, total weight 4.0 
best attribute Forecast inf 1.000 gain 0.311 val 0.311 
Collapse tree for 4 items to leaf Play 

Decision Tree: 
Play (4.0/1.0) 



Play (4.00:1.00/2.19) 

Tree saved 


Evaluation on training data (4 items): 

    Before Pruning   After Pruning 
---------------- --------------------------- 
Size  Errors Size  Errors Estimate 

    1 1(25.0%)  1 1(25.0%) (54.7%) << 

Mon problème est que l'arbre est basé sur les prévisions en fonction modifiée d'un seul nœud. J'ai suivi le pseudo code de l'algorithme moi-même et je me retrouve toujours avec un arbre qui utilise la fonction Sky pour décider s'il doit jouer ou non. Qu'est-ce que je fais mal?

Je pense que mon problème est parce que je ne peux pas définir le niveau de confiance d'élagage. Je l'ai essayé mais il n'acceptera pas ma contribution, par ex.

c4.5.exe -f v2 -v 1 -c 0.5 > v2.r3 

ou

c4.5.exe -f v2 -v 1 -c 50% > v2.r3 

ne fonctionne pas.

+0

Le lien que vous avez posté ne fonctionne pas --- Je reçois une erreur '403 Permission denied'. –

+0

Désolé, cela devrait marcher maintenant! – Haffi112

Répondre

0

Vous pouvez essayer -c 50 au lieu de -c 50%. Je ne suis pas sûr pourquoi il ne choisit pas Airtemp parce qu'il devrait avoir le plus haut gain d'information.

Je vais aussi deviner que vous utilisez le livre Machine Learning de Tom Mitchell. Son livre devrait avoir quelques exemples, essayez-les et voyez comment ils se comparent. Editer: Avez-vous exécuté les exemples sur le site que vous avez lié aussi et si oui ont-ils correspondu?

+0

Nous n'utilisons pas Tom Mitchell, le recommandez-vous sur Ethem Alpaydin? Je n'ai pas été trop enthousiasmé par le livre jusqu'à présent, j'ai l'habitude d'extraire plus de théorie des livres que j'ai lus, celui-ci me semble plus pratique. En outre, j'ai découvert le problème avec l'application. J'ai essayé l'option -c 50 et cela ne fonctionne pas car il semble que le programme lit la valeur numérique du code ASCII, par exemple. -c a fonctionne et vous donne 97% parce que la valeur ASCII numérique de 'a' est 97. Ma solution était de recompiler le programme à partir de zéro avec différents paramètres par défaut. – Haffi112

+0

J'ai utilisé le livre de Tom Mitchell pour ma classe Machine Learning. J'aime ça et ça me semble vraiment décent. Je n'ai pas vu le livre d'Ethem Alpaydin cependant. J'ai parcouru le code et il utilise la fonction atof [link] (http://www.cplusplus.com/reference/clibrary/cstdlib/atof/) qui convertit une chaîne représentant un nombre à virgule flottante en float en C++. – deathly809