Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ca.pfv.spmf.test;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.Scanner;
- import ca.pfv.spmf.algorithms.sequenceprediction.ipredict.database.Item;
- import ca.pfv.spmf.algorithms.sequenceprediction.ipredict.database.Sequence;
- import ca.pfv.spmf.algorithms.sequenceprediction.ipredict.database.SequenceDatabase;
- import ca.pfv.spmf.algorithms.sequenceprediction.ipredict.database.SequenceStatsGenerator;
- import ca.pfv.spmf.algorithms.sequenceprediction.ipredict.predictor.CPT.CPTPlus.CPTPlusPredictor;
- /**
- * Example of how to use the CPT+ sequence prediction model in the source code.
- * Copyright 2015.
- */
- public class MainTestCPTPlus {
- public static void main(String [] arg) throws IOException{
- // Load the set of training sequences
- String inputPath = fileToPath("DATA20170214.txt");
- SequenceDatabase trainingSet = new SequenceDatabase();
- trainingSet.loadFileSPMFFormat(inputPath, Integer.MAX_VALUE, 0, Integer.MAX_VALUE);
- // Print the training sequences to the console
- System.out.println("--- Training sequences ---");
- for(Sequence sequence : trainingSet.getSequences()) {
- System.out.println(sequence.toString());
- }
- System.out.println();
- // Print statistics about the training sequences
- SequenceStatsGenerator.prinStats(trainingSet, " training sequences ");
- // The following line is to set optional parameters for the prediction model.
- // We want to
- // activate the CCF and CBS strategies which generally improves its performance (see paper)
- String optionalParameters = "CCF:true CBS:true CCFmin:1 CCFmax:6 CCFsup:2 splitMethod:0 minPredictionRatio:1.0 noiseRatio:1.0";
- // List<List<Item>> itemsets = finder.findFrequentItemsets(trainingSequences, parameters.paramInt("CCFmin"), parameters.paramInt("CCFmax"), parameters.paramInt("CCFsup"));
- // Train the prediction model
- CPTPlusPredictor predictionModel = new CPTPlusPredictor("CPT+", optionalParameters);
- predictionModel.Train(trainingSet.getSequences());
- // Now we will make a prediction.
- // We want to predict what would occur after the sequence <1, 3>.
- // We first create the sequence
- FileReader fr = new FileReader("D:\\Test.txt");
- BufferedReader br = new BufferedReader(fr);
- String line,Teststring;
- String[] TestArray= new String[500000];
- String[][] MainTestArray = new String[30000][8];
- ArrayList myList = new ArrayList();
- int Q=0;
- int SequenceT=0,member=0;
- while((line = br.readLine())!=null)
- {
- //br.readLine()是指讀取txt檔的每一行資料,把讀到的資料存到line
- //再將line丟給Teststring去儲存
- Teststring = line;
- //因為我這個test檔的資料格式是-->一行有N個字串,用空白隔開,
- //tempstring.split("\\s") 會依照空白鍵來切割,剛好切三個,所以這邊我的tempArray的大小才會宣告3
- TestArray = Teststring.split("\\s");
- //這邊就是按照順序,一行一行的儲存到動態陣列裡面
- for(Q=0;Q< TestArray.length;Q++)
- {
- if(TestArray[Q].equals(-2))
- {
- SequenceT = SequenceT + 1;
- member = 0;
- }
- else if(!TestArray[Q].equals(-1))
- {
- MainTestArray[SequenceT][member] = TestArray[Q];
- member = member+1;
- }
- }
- }
- int i;
- int Test;
- int r=0;
- for(r=0;r<MainTestArray[SequenceT].length;r++)
- {
- String OutputTest[] = new String[30000] ;
- for (i = 1; i <= 30000; i++)
- {
- Scanner cin = new Scanner(MainTestArray[r].length);
- Test = 2;
- while(Test != 1)
- {
- Sequence sequence = new Sequence(0);
- int n = cin.nextInt();
- for(int x = 0 ; x<n ; x++)
- {
- sequence.addItem(new Item(cin.nextInt()));
- }
- Sequence thePredicition = predictionModel.Predict(sequence);
- // System.out.println("Prediction" + thePredicition);
- String X = String.valueOf(thePredicition);
- Test = 1;
- OutputTest[i-1] = X.substring(9,11);
- }
- // System.out.println(OutputTest[i-1]);
- //break;
- }
- // \r\n next line symbol
- FileWriter fw = new FileWriter("D:\\OutputTest.txt");
- for(int count=1 ; count <= 30000 ; count++)
- {
- fw.write(OutputTest[i-1] + "\r\n");
- }
- fw.close();
- }
- }
- public static String fileToPath(String filename) throws UnsupportedEncodingException{
- URL url = MainTestCPTPlus.class.getResource(filename);
- return java.net.URLDecoder.decode(url.getPath(),"UTF-8");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement