Aproior
来源:互联网 发布:如何用telnet测试端口 编辑:程序博客网 时间:2024/06/05 03:23
import java.util.*;/** * Created by sdust on 2017/4/18. */public class Aproior { private int min_support = 2; //最小支持度 private double confidence_level = 0.6; //最小置信度 //原始集合 private static final String[][] orignSet = new String[][]{ {"I1","I2","I5"}, {"I2","I4"}, {"I2","I3"}, {"I1","I2","I4"}, {"I1","I3"}, {"I2","I3"}, {"I1","I3"}, {"I1","I2","I3","I5"}, {"I1","I2","I3"} }; private static final ArrayList<String> all = new ArrayList<String>(); public void init() { all.add("I1"); all.add("I2"); all.add("I3"); all.add("I4"); all.add("I5"); } //通过候选集得到频繁集 public Vector<ArrayList<String>> getFrequentItemset(Vector<ArrayList<String>> arrayListMap) { Vector<ArrayList<String>> arrayListVector = new Vector<>(); for(int i = 0; i < arrayListMap.size(); ++i) { String[] strings = null; strings = arrayListMap.get(i).toArray(strings); if(isSupport(strings)){ arrayListVector.add((ArrayList<String>) Arrays.asList(strings)); } } return arrayListVector; } //从当前的频繁集得到候选集 public Vector<ArrayList<String>> nextCandidateItemset(Vector<ArrayList<String>> nowFrequentItemset) { Vector<ArrayList<String>> nextCandidateItemset = new Vector<>(); for(int i = 0; i < nowFrequentItemset.size(); ++i) { ArrayList<String> arrayList = nowFrequentItemset.get(i); ArrayList<String> remainItem = remain(arrayList); for(int j = 0; j < remainItem.size(); ++j) { String t = remainItem.get(j); //取出剩余集合中一个物品 ArrayList<String> arrayList1 = new ArrayList<>(); arrayList1 = (ArrayList)arrayList.clone(); // 频繁集 arrayList1.add(t); // 频繁集 + t = 由该频繁集中的一项得到的新候选集中的一项 nextCandidateItemset.add(arrayList1); // 添加到候选集中 } } return nextCandidateItemset; // 返回候选集 } //检测候选集中的一项是否满足最小置信度 public boolean isSupport(String[] strings) { int count = 0; for(int i = 0; i < orignSet.length; ++i) { String[] t = orignSet[i]; //取原始集合中的一组 boolean o1 = true; //假设t是包含strings中的全部元素的 for(int j = 0; j < strings.length; ++j) { boolean o2 = false; //找t中是否包含strings中的strings[j]元素 for(int k = 0; k < t.length; ++k) { if(strings[i].equals(t[k])) { o2 = true; break; } } //如果t不包含strings[j]元素,则o1=false,不再继续查找 if(!o2) { o1 = false; break; } } if(o1) ++count; } return count >= min_support; } //取出总的物品集合中没有在该集合中的物品 public ArrayList<String> remain(ArrayList<String> itemSet) { ArrayList<String> remainSet = new ArrayList<>(); for(int i = 0; i < itemSet.size(); ++i) { if(all.contains(itemSet.get(i))) continue; remainSet.add(itemSet.get(i)) ; } return remainSet; }}
0 0
- Aproior
- 分布式服务化系统一致性(分布式事务、ACID、BASE、CAP)原理与解决方案
- GDOI2017滚粗记
- java请求跨域问题解决方法
- 2017.04.18:网易2017校招数据分析开放题
- Yaws(erlang web服务器框架) 学习记录之文件上传
- Aproior
- matlab调用R语言及遇到错误解决
- Java语言日期的截取和加减运算
- Installation error: INSTALL_FAILED_MEDIA_UNAVAILABLE
- 6.Springboot 之 多配置文件
- oracle设置表空间自增长
- Redis集群
- jQuery如何验证两次输入的密码是否一致
- MySQL无法链接2003错误