Bonjour,
j'ai l'erreur java.lang.IndexOutOfBoundsException : Index: 19, Size: 19
à la ligne de code suivante: int[][] matches = ConversationAnalyser.computeMatches2(ConversationLoader.getS*tatesListForLeftOutFiles().get(folderNum), mostLikelyStateSequenceForEachFile);
elle provient de computeMatches2(ConversationLoader.getStatesListForLeftOutFi*les().get(folderNum), mostLikelyStateSequenceForEachFile);
la voici public static int[][] computeMatches2(List<ConversationState> predictedData, List<ConversationState> realData)
{
int[][] matches = null;
matches = new int[ConversationState.values().length][ConversationState.values().length];
for (int i = 0; i < predictedData.size(); i++)
{
matches[predictedData.get(i).ordinal()][realData.get(i).ordinal()]++;
}
return matches;
}
voivi mon main:
public class Main
{
private static int NUM_GLOBAL = 60;
static public void main(String[] args) throws IOException
{
String folderPath = args[0];
ConversationLoader.readObservationsAndStatesForLeaveOneOut(folderPath);
Hmm<ObservationDiscrete<ConversationObservation>> learntHmm = ConversationProcessor.learnHMM_BaumWelch2(ConversationLoader.getObservationsListForThisFolder());
for (int folderNum = 0; folderNum < NUM_GLOBAL; folderNum++) // For each file
{
ConversationProcessor.writeLearntHmmToFile(learntHmm, folderNum);
System.out.println("learntHmm " + folderNum + ":" + learntHmm);
List<ConversationState> mostLikelyStateSequenceForEachFile = new ArrayList<ConversationState>();
mostLikelyStateSequenceForEachFile = ConversationProcessor.getMostLikelyStateSequence(learntHmm, ConversationLoader.getObservationsListForLeftOutFiles().get(folderNum));
int[][] matches = ConversationAnalyser.computeMatches2(ConversationLoader.getStatesListForLeftOutFiles().get(folderNum), mostLikelyStateSequenceForEachFile);
// determine le nombre de matching pr chaque fichier de test
printMatches(matches);
double precision = ConversationAnalyser.computePrecision(matches);
double recall = ConversationAnalyser.computeRecall(matches);
double fscore = ConversationAnalyser.computeFscore(precision, recall);
double accuracy = ConversationAnalyser.computeAccuracy(matches);
System.out.println("Dossier #" + folderNum + "\nPrecision (" + precision + ") Recall (" + recall + ") F-score (" + fscore + ") Accuracy (" + accuracy + ")");
}
}
j'aimerai coriger cette erreur,
Merci a tous ceux qui pourront me répondre.
lili2010
Partager