can't read "argv": no such variable
    while executing
"llength $argv"
    (in namespace eval "::request" script line 3)
    invoked from within
"namespace eval ::request $script"
    ("::try" body line 12)

OUTPUT BUFFER:

#!/usr/bin/tclsh if {[llength $argv]<5} { puts "Usage : apprentissage.tcl train.co train.eti test.co test.eti [e|b|g]" exit 0 } set nomFichierCoordonneesTrn [lindex $argv 0] set nomFichierEtiquettesTrn [lindex $argv 1] set nomFichierCoordonneesTest [lindex $argv 2] set nomFichierEtiquettesTest [lindex $argv 3] set distri [lindex $argv 4] set proportion 0.333 set listeInitialeBandwidths {0.01 0.1 1.0 10.0 100.0 1000.0} set nbApprentissages 5 set listeMeilleursBandwidths {} set topBandwidth -1.0 set topScore 1.0 for {set apprentissage 0} {$apprentissage<$nbApprentissages} {incr apprentissage} { puts "apprentissage $apprentissage" #lecture des coordonnees set nomFichier $nomFichierCoordonneesTrn set fichier [open $nomFichier "r"] gets $fichier ligne set nbPoints [lindex $ligne 0] set nbDimensions [lindex $ligne 1] gets $fichier ligne for {set i 0} {$i<$nbPoints} {incr i} { gets $fichier ligne set noms($i) [lindex $ligne 0] set coordonnees($i) [lrange $ligne 1 end] } close $fichier #lecture des etiquettes set nomFichier $nomFichierEtiquettesTrn set fichier [open $nomFichier "r"] for {set i 0} {$i<$nbPoints} {incr i} { gets $fichier ligne set etiquette [lindex $ligne 1] set etiquettes($i) $etiquette } close $fichier #creation de l'ensemble d'apprentissage set tailleEnsembleApprentissage [expr int(floor($proportion*$nbPoints))] set nbPointsSelectionnes 0 for {set i 0} {$i<$nbPoints} {incr i} { set pointsSelectionnes($i) "NON" } while {$nbPointsSelectionnes<$tailleEnsembleApprentissage} { set selection [expr int(floor(rand()*$nbPoints))] if {$pointsSelectionnes($selection)=="NON"} { set pointsSelectionnes($selection) "OUI" incr nbPointsSelectionnes } } #ecriture des fichiers de sortie set fichierTrnCo [open "TempTrn.co" "w"] set fichierTestCo [open "TempTest.co" "w"] set fichierTrnEti [open "TempTrn.eti" "w"] set fichierTestSoleti [open "TempTest.soleti" "w"] puts $fichierTrnCo "$tailleEnsembleApprentissage $nbDimensions" puts $fichierTrnCo "" puts $fichierTestCo "[expr $nbPoints-$tailleEnsembleApprentissage] $nbDimensions" puts $fichierTestCo "" for {set i 0} {$i<$nbPoints} {incr i} { if {$pointsSelectionnes($i)=="OUI"} { puts $fichierTrnCo "$noms($i) $coordonnees($i)" puts $fichierTrnEti "$noms($i) $etiquettes($i)" } else { puts $fichierTestCo "$noms($i) $coordonnees($i)" puts $fichierTestSoleti "$noms($i) $etiquettes($i)" } } close $fichierTrnCo close $fichierTestCo close $fichierTrnEti close $fichierTestSoleti set meilleurBandwidth -1.0 set deuxiemeMeilleurBandwidth -1.0 set meilleurScore 1.0 foreach bandwidth $listeInitialeBandwidths { puts "$bandwidth" #apprentissage sur Temp catch { exec kernelBayesClassifier TempTrn.co TempTrn.eti TempTest.co TempTest.eti -band=$bandwidth \ -distri=$distri } #evaluation de l'apprentissage set fichier1 [open "TempTest.soleti" "r"] set fichier2 [open "TempTest.eti" "r"] set nbDifferences 0 set nbLignes 0 while {[gets $fichier1 ligne1]>0} { gets $fichier2 ligne2 if {$ligne1 != $ligne2} { incr nbDifferences } incr nbLignes } close $fichier1 close $fichier2 set scoreCourant [expr $nbDifferences.0/$nbLignes.0] if {$scoreCourant<$meilleurScore} { set meilleurScore $scoreCourant set deuxiemeMeilleurBandwidth $meilleurBandwidth set meilleurBandwidth $bandwidth } } if {$meilleurBandwidth>$deuxiemeMeilleurBandwidth} { set gauche $deuxiemeMeilleurBandwidth set droite $meilleurBandwidth } else { set gauche $meilleurBandwidth set droite $deuxiemeMeilleurBandwidth } #on affine set nombreAffinements 10 for {set i 1} {$i<$nombreAffinements} {incr i} { puts "$i" set bandwidth [expr $gauche+($droite-$gauche)*$i/$nombreAffinements] #apprentissage sur Temp catch { exec kernelBayesClassifier TempTrn.co TempTrn.eti TempTest.co TempTest.eti -band=$bandwidth \ -distri=$distri } #evaluation de l'apprentissage set fichier1 [open "TempTest.soleti" "r"] set fichier2 [open "TempTest.eti" "r"] set nbDifferences 0 set nbLignes 0 while {[gets $fichier1 ligne1]>0} { gets $fichier2 ligne2 if {$ligne1 != $ligne2} { incr nbDifferences } incr nbLignes } close $fichier1 close $fichier2 set scoreCourant [expr $nbDifferences.0/$nbLignes.0] if {$scoreCourant<$meilleurScore} { set meilleurScore $scoreCourant set meilleurBandwidth $bandwidth if {$scoreCourant<$topScore} { set topScore $scoreCourant set topBandwidth $bandwidth } } } puts "band : $meilleurBandwidth ; score : $meilleurScore" lappend listeMeilleursBandwidths $meilleurBandwidth } #calcul moyenne meilleurs bandwidth set moyenneBandwidths 0 for {set apprentissage 0} {$apprentissage<$nbApprentissages} {incr apprentissage} { set moyenneBandwidths [expr $moyenneBandwidths+[lindex $listeMeilleursBandwidths $apprentissage]] } set moyenneBandwidths [expr $moyenneBandwidths/$nbApprentissages.0] puts "moyenneBandwidths : $moyenneBandwidths" #puts "topBandwidths : $topBandwidths" set nomFichierCoordonneesTrn [lindex $argv 0] set nomFichierEtiquettesTrn [lindex $argv 1] set nomFichierCoordonneesTest [lindex $argv 2] set nomFichierEtiquettesTest [lindex $argv 3] catch { exec kernelBayesClassifier $nomFichierCoordonneesTrn $nomFichierEtiquettesTrn $nomFichierCoordonneesTest \ $nomFichierEtiquettesTest -band=$moyenneBandwidths -distri=$distri }