`
liyonghui160com
  • 浏览: 761756 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关联算法增量实现原理

阅读更多

 

 

public class Test {

    /**
     * 打印一个数组所有的非空子集
     */
    public List<String> printAllSubsets(Integer[] array) {
        if (null == array || 0 == array.length) {
            throw new IllegalArgumentException("数组不能为Null,至少有一个元素");
        }
        Arrays.sort(array);  //进行排序
        int len = array.length;
        List<String> stringList = new LinkedList<String>();
        int allMasks = 1 << len;
        // 遍历所有的二进制表示方式
        for (int i = 1; i < allMasks; i++) {
            //if (i == allMasks - 1) break;
            StringBuilder s = new StringBuilder();
            for (int j = 0; j < len; j++)
                if ((i & (1 << j)) > 0) {
                    s.append(array[j]+ "|");
                }
            stringList.add(s.toString());
        }
        return stringList;
    }

    public static void main(String[] args) {

        Test exam = new Test();
        //三个订单
        List<String> stringList = exam.printAllSubsets(new Integer[]{1,3,2,4});
        List<String> stringList2 = exam.printAllSubsets(new Integer[]{1,3,2});
        List<String> stringList3 = exam.printAllSubsets(new Integer[]{1,4,3});
        //候选项集,出现次数,每天增量更新没有加入支持度限制(实际中排列组合会很多数据量巨大,根据每天的订单增量计算)
        Map<String,Integer> map=new HashMap<String, Integer>();//模拟数据库


        for (String s : stringList) {
            System.out.println(s);
            if(!map.containsKey(s)) {
                map.put(s, 1);
            }else
            {
                map.put(s,map.get(s)+1);
            }
        }
        for (String s : stringList2) {
            System.out.println(s);
            if(!map.containsKey(s)) {
                map.put(s, 1);
            }else
            {
                map.put(s,map.get(s)+1);
            }
        }
        for (String s : stringList3) {
            System.out.println(s);
            if(!map.containsKey(s)) {
                map.put(s, 1);
            }else
            {
                map.put(s,map.get(s)+1);
            }
        }

        float support = map.get("1|2|");
        System.out.println("支持度"+support);

        float confidence = map.get("1|3|")*100/map.get("3|");
        System.out.println(confidence+"%的用户购买了3|还购买了1|");
    }
}

分享到:
评论

相关推荐

    数据挖掘原理与SPSS Clementine应用-关联规则算法

    10.2 关联规则算法原理 10.3 分层搜索经典算法-Apriori算法 10.4 并行挖掘算法 10.5 增量更新挖掘算法 10.6 多层关联规则挖掘 10.7 多维关联规则挖掘 10.8 约束性关联规则挖掘 10.9 数量关联规则挖掘 10.10 负关联...

    地理信息系统算法基础.rar

    13.4.3关联规则算法 13.5回归分析 13.5.1一元线性回归模型 13.5.2多元线性回归模型 13.5.3非线性回归模型 13.5.4回归分析与相关分析 13.6系统聚类分析 13.6.1概述 13.6.2聚类要素预处理 13.6.3...

    地理信息系统算法基础

    目录序前言第1章算法设计和分析1.1概述1.2算法设计原则1.3算法复杂性的度量1.3.1时间复杂性1.3.2空间复杂性1.4最优算法1.5算法的评价1.5.1如何估计算法运行时间1.5.2最坏情况和平均情况的分析1.5.3...

    CMAC算法收敛性分析及泛化能力研究 (2001年)

    利用矩阵理论和线性方程组迭代收敛的一般性原理,在不附加特殊条件的情况下,证明了CMAC算法在批量和增量两种学习方式下的收敛定理,对在关联矩阵正定条件下得出的结论进行推广和改进。在此基础上提出一种学习率自寻...

    数据库系统实现

    书中对数据库系统实现原理进行了深入阐述,并具体讨论了数据库管理系统的三个主要成分—存储管理器、查询处理器和事务管理器的实现技术。书中还对信息集成的最新技术,例如数据仓库、OLAP、数据挖掘、Mediator、数据...

    CMAC 算法收敛性分析及泛化能力研究

    CMAC 算法在批量和增量两种学习方式下的收敛定理, 对在关联矩阵正定条件下得出的结论进行推广 和改进。在此基础上提出一种学习率自寻优的CMAC 改进算法, 并提出一种简单可行的评价CMAC 网 络整体泛化性能...

    解Drucker-Prager塑性问题的二阶锥互补法 (2014年)

    基于经典弹塑性理论中多数屈服准则具有凸锥数学结构的...然后,基于参变量变分原理和有限元技术,建立了弹塑性增量分析的二阶锥线性互补模型;最后,利用一类半光滑Newton算法求解。数值算例表明了本文方法的有效性。

    《软件工程导论》张海潘_第五版_清华_课后答案

    作者:张海藩 第1章 软件工程学概述1 1.1 软件危机1 1.1.1 软件危机的介绍1 1.1.2 产生软件危机的原因3 1.1.3 消除软件危机的途径4 1.2 软件工程5 1.2.1 软件工程的介绍5 ...B.5.3 实现编辑程序的算法367

    java 面试题 总结

    Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 12、final, finally, finalize的区别。  final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 ...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    2.5.5 增量和减量运算符 60 2.5.6 计算的顺序 63 2.6 类型转换和类型强制转换 64 2.6.1 赋值语句中的类型转换 65 2.6.2 显式类型转换 65 2.6.3 老式的类型强制转换 66 2.7 AUTO关键字 66 2.8 查看类型 67 ...

    计算机二级公共基础知识

    1. 算法的基本概念 利用计算机算法为计算机解题的过程实际上是在实施某种算法。 (1)算法的基本特征 算法一般具有4个基本特征:可行性、确定性、有穷性、拥有足够的情报。 (2)算法的基本运算和操作 算法的基本...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    说明:用于连接到oracle数据库,也可实现用户的切换 用法:conn 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开连接(disc) 说明:断开与当前数据库的连接 ...

    整理后java开发全套达内学习笔记(含练习)

    算法 ['ælgәriðm] Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv.直接地,立即[di'rektli, dai'rektli]) apply v.应用,适用 [ә'plai] application ...

Global site tag (gtag.js) - Google Analytics