// 按照时间,sizeWindow和stepWindow将数据分成项集,再调用Itemset2File写入文件 public static String[] movingdivide(DataItems datainput, TaskElement task, boolean FP) throws IOException { int sizeWindow = (int) ((ParamsSM) task.getMiningParams()).getSizeWindow() * 1000; // seconds int stepWindow = (int) ((ParamsSM) task.getMiningParams()).getStepWindow() * 1000; // seconds int len = datainput.getLength(); List<Date> time = datainput.getTime(); List<String> data = datainput.getData(); List<String> DataSets = new ArrayList<String>(); Date win_start_time = time.get(0); Date win_end_time = getDateAfter(win_start_time, sizeWindow); Date win_start_next = getDateAfter(win_start_time, stepWindow); int ind_next = -1; StringBuilder sb = new StringBuilder(); int i = 0; do { DataItem item = datainput.getElementAt(i); i++; Date date = item.getTime(); String val = item.getData(); if (!date.before(win_start_time) && !date.after(win_end_time)) { if (sb.length() != 0) sb.append(" "); sb.append(val + " -1"); if (!date.before(win_start_next) && ind_next == -1) ind_next = i - 1; } else { sb.append(" -2"); DataSets.add(sb.toString()); sb = new StringBuilder(); if (ind_next == -1) { if (!date.before(getDateAfter(win_end_time, stepWindow))) { win_start_time = date; if (sb.length() != 0) sb.append(" "); sb.append(val + " -1"); } else { win_start_time = win_start_next; // getDateAfter(win_start_time, stepWindow); if (sb.length() != 0) sb.append(" "); sb.append(val + " -1"); } } else { i = ind_next; ind_next = -1; win_start_time = win_start_next; } win_end_time = getDateAfter(win_start_time, sizeWindow); win_start_next = getDateAfter(win_start_time, stepWindow); } } while (i < len); sb.append(" -2"); DataSets.add(sb.toString()); return DataSets.toArray(new String[0]); }