`
liyonghui160com
  • 浏览: 771745 次
  • 性别: 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|");
    }
}

分享到:
评论

相关推荐

    可增量更新的关联规则挖掘算法

    采用可增量更新的关联规则挖掘算法可以实现实时分析,帮助社交平台更好地优化用户体验。 #### 五、总结 可增量更新的关联规则挖掘算法为解决传统关联规则挖掘算法在处理动态数据集时存在的问题提供了有效的解决...

    数据挖掘中基于负边界思想的关联规则增量式更新算法.pdf

    负边界的概念被明确定义,并通过该算法详细描述了如何高效更新数据库中的关联规则,包括算法的实现原理和过程,并给出相应的程序伪代码。最终,文章通过实验验证了算法的有效性。 在关联规则增量式更新算法中,负...

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

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

    一种改进的增量数据挖掘算法.pdf

    从算法的实用性和性能上来看,改进的增量数据挖掘算法在解决关联规则更新问题方面具有重要意义。它特别适合于那些数据频繁更新的应用场景,比如零售业的购物篮分析、网络安全中的入侵检测、生物信息学中的序列分析等...

    数据挖掘经典算法 关联规则挖掘Apriori算法

    通过阅读和理解这段代码,你可以更深入地了解Apriori算法的内部工作原理,并可能对其进行修改或扩展以适应不同的数据挖掘任务。对于学习数据挖掘或者关联规则挖掘的初学者,这是一个很好的实践资源。

    增量式PID的MATLAB实现.rar

    增量式PID控制器是一种在自动化控制领域广泛应用的调节算法,它基于传统的比例-积分-微分(PID)控制理论,但采用不同的计算方式。在MATLAB环境中实现增量式PID,可以帮助我们更好地理解和应用这一控制策略。以下是...

    基于关联规则的数据挖掘算法研究 (1).pdf

    例如,Apriori算法由于其易理解、易于实现的特点,在许多实际应用中得到了广泛的应用,特别是在处理大规模数据集时,虽然其性能可能不如一些更现代的算法,但其原理和实现的简洁性使其在教育和一些特定的商业场景中...

    一种时态关联规则挖掘算法

    #### 四、算法实现原理 - **频繁1项集的保存**:在每一次数据更新后,算法只保存新产生的频繁1项集,这些项集将用于后续规则的挖掘过程中。 - **剪枝策略**:基于历史频繁1项集的信息,算法能够有效地筛选出可能包含...

    三维重建-使用OpenCV+C++开发的增量式三维重建算法实现-优质项目分享.zip

    在这个项目中,我们重点讨论的是使用OpenCV库和C++编程语言实现的增量式三维重建算法。 首先,我们要理解什么是增量式三维重建。在传统的全局三维重建方法中,通常需要一次性处理所有输入图像,计算图像间的对应...

    Ruby中的协同过滤推荐系统实现,包括SVD和增量SVD_Ruby_下载.zip

    这个压缩包"Ruby中的协同过滤推荐系统实现,包括SVD和增量SVD_Ruby_下载.zip"包含了对这一算法的实现,特别关注了两种不同的方法:奇异值分解(Singular Value Decomposition, SVD)和增量SVD。 协同过滤的基本思想是...

    从计算机视觉(slam)和摄影测量两个维度进行ba 算法原理推导1

    **计算机视觉中的SLAM与摄影测量的BA算法原理** **一、李群与李代数在BA中的应用** 李群和李代数是数学中研究连续变换群的理论,它们在计算机视觉,尤其是SLAM(Simultaneous Localization And Mapping)中的应用...

    C语言版PID控制算法

    在C语言中实现PID控制算法,首先要理解PID的基本原理。PID控制器的输出由三个部分组成:比例项P、积分项I和微分项D。比例项是当前误差的直接反映,积分项用于消除稳态误差,而微分项则有助于提高系统的响应速度和...

    机器学习十大算法:Apriori

    Apriori算法作为频繁模式和关联规则挖掘的基本算法,其简单性和易于实现的特点使其成为数据挖掘领域的基石。本篇将基于原始论文,详细解析Apriori、AprioriTid以及AprioriAll算法,并通过实际案例分析Apriori的性能...

    地理信息系统算法基础.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...

    KM算法(转).docx

    KM算法的工作原理是通过不断调整顶标,使得权值相等的子图逐渐扩大,直到找到一个完备匹配。当无法找到从某个X顶点出发的交错路径时,算法会更新顶标。具体做法是减小交错树中X顶点的顶标,同时增加Y顶点的顶标,这...

    Android增量更新源码及动态链接库

    增量更新是一种有效的软件更新策略,它只下载自上次版本以来发生变化的部分,而非...通过深入研究这些源码,开发者可以更好地理解增量更新的工作原理,从而在自己的项目中实现更高效、更稳定、更节省资源的更新机制。

Global site tag (gtag.js) - Google Analytics