首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP - APRIORI -如何显示满足支持值的组合?

PHP是一种通用的开源脚本语言,用于服务器端编程和Web开发。它具有易于学习和使用的特点,广泛应用于构建动态网站和Web应用程序。

APRIORI是一种经典的关联规则挖掘算法,用于发现数据集中的频繁项集和关联规则。它基于支持度和置信度的概念,通过扫描数据集来识别频繁项集,并生成关联规则。

要显示满足支持值的组合,可以使用PHP编写以下代码:

代码语言:php
复制
<?php
// 数据集
$transactions = array(
    array('A', 'B', 'C'),
    array('A', 'B'),
    array('A', 'C', 'D'),
    array('B', 'C'),
    array('B', 'D'),
    array('C', 'D')
);

// 计算支持值
function calculateSupport($transactions, $itemset) {
    $count = 0;
    foreach ($transactions as $transaction) {
        if (array_intersect($itemset, $transaction) == $itemset) {
            $count++;
        }
    }
    return $count;
}

// 显示满足支持值的组合
function displayCombinations($transactions, $minSupport) {
    $items = array_unique(call_user_func_array('array_merge', $transactions));
    $combinations = array();

    // 生成所有可能的组合
    for ($i = 1; $i <= count($items); $i++) {
        $combinations = array_merge($combinations, combinations($items, $i));
    }

    // 过滤满足支持值的组合
    foreach ($combinations as $combination) {
        $support = calculateSupport($transactions, $combination);
        if ($support >= $minSupport) {
            echo implode(', ', $combination) . ' - 支持值: ' . $support . '<br>';
        }
    }
}

// 生成组合
function combinations($items, $k) {
    $combinations = array();
    $n = count($items);

    if ($k > $n) {
        return $combinations;
    }

    $indices = range(0, $k - 1);
    $combinations[] = array_intersect_key($items, array_flip($indices));

    while (true) {
        $i = $k - 1;
        while ($i >= 0 && $indices[$i] == $n - $k + $i) {
            $i--;
        }

        if ($i < 0) {
            break;
        }

        $indices[$i]++;
        for ($j = $i + 1; $j < $k; $j++) {
            $indices[$j] = $indices[$j - 1] + 1;
        }

        $combinations[] = array_intersect_key($items, array_flip($indices));
    }

    return $combinations;
}

// 调用函数显示满足支持值的组合
displayCombinations($transactions, 2);
?>

上述代码中,我们首先定义了一个数据集$transactions,其中包含了多个交易记录。然后,我们定义了一个计算支持值的函数calculateSupport,该函数接受数据集和一个项集作为参数,返回项集在数据集中出现的次数。接下来,我们定义了一个显示满足支持值的组合的函数displayCombinations,该函数接受数据集和最小支持值作为参数,生成所有可能的组合,并过滤出满足支持值的组合进行显示。最后,我们定义了一个生成组合的函数combinations,该函数接受一个项集和一个整数k作为参数,返回所有包含k个元素的组合。

在代码的最后,我们调用displayCombinations函数,并传入数据集$transactions和最小支持值2,以显示满足支持值的组合。

这是一个简单的示例,实际应用中可能需要根据具体情况进行适当的修改和优化。关于APRIORI算法的更多详细信息和实现细节,可以参考腾讯云的数据挖掘产品Tencent Machine Learning Platform for AI(ML-Platform):https://cloud.tencent.com/product/mlp

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 机器学习|关联规则与购物篮分析实战

    最简单方法是穷举项集所有组合,并计算和判断每个组合是否满足条件,一个长度为n项集组合个数是? 怎样快速挖出满足条件关联规则是关联挖掘需要解决主要问题。...Apriori算法是解决这一问题最流行算法。 Apriori算法 生成频繁项集 这一阶段找出所有满足最小支持项集,找出这些项集称为频繁项集。...min_support:给定最小支持度。 use_colnames:默认False,则返回物品组合用编号显示,为True的话直接显示物品名称。...max_len:最大物品组合数,默认是None,不做限制。如果只需要计算两个物品组合的话,便将这个设置为2。...这说明买了{18,11}的人很可能会再购买 1.468 份 15 。所以可以让它们放到一起出售。 OK,相信通过本次案例,已经能够明白Apriori算法原理以及如何使用它。

    1.6K30

    任意组合、编排多线程并发框架,支持任意阻塞、等待、串并行组合,回调、超时、默认

    并发场景可能存在需求之——全组任务超时 一组任务,虽然内部各个执行单元时间不可控,但是我可以控制全组执行时间不超过某个。通过设置timeOut,来控制全组执行阈值。...总结 该并发框架提供 > 1 提供任何形式串行、并行执行单元组合。...如a、b、c串行,a、b串行同时与c并行,a、b、c并行 > 2 为每个执行单元提供执行成功、失败、超时、异常回调 > 3 支持为单个执行单元设置异常、失败后默认 > 4 支持为整个group...(多个任意组合执行单元)设置超时时间。...也支持整个group异步回调不阻塞主线程 > 6 支持每个group独享线程池,或所有group共享线程池(默认) ?

    1.2K10

    数据挖掘十大算法(四):Apriori(关联分析算法)

    如何定义和表示频繁项集和关联规则呢?这里引入支持度和可信度(置信度)。 支持度:一个项集支持度被定义为数据集中包含该项集记录所占比例,上图中,豆奶支持度为4/5,(豆奶、尿布)为3/5。...那么如何得可能被一起购买商品组合? 上图显示了物品之间所有可能组合,从上往下一个集合是 Ø,表示不包含任何物品空集,物品集合之间连线表明两个或者更多集合可以组合形成一个更大集合。...如下图所示: 频繁项集: 主要步骤: 首先会生成所有单个物品项集列表 扫描交易记录来查看哪些项集满足最小支持度要求,那些不满足最小支持集合会被去掉 对剩下集合进行组合以生成包含两个元素项集...ssCnt[can] += 1 numItems = float(len(D)) retList = [] # 重新记录满足条件数据(即支持度大于阈值数据)...return retList # 返回频繁项集列表Ck # 封装所有步骤函数 # 返回 所有满足大于阈值组合 集合支持度列表 def apriori(dataSet, minSupport =

    1.9K20

    如何设计接口测试用例边界测试组合条件测试

    这篇文章简单总结下我是如何设计接口测试用例。 今天在帮同事review代码时候,发现他代码遗漏了一些场景处理,就顺便跟他多聊了些为对这个话题看法。...;针对userIds这个属性,我会构建如下测试用例: userIds=null userIds=EmptyList userIdssize等于批量接口限定 userIdssize大于批量接口限定...userIds中元素有null情况 userIds中元素全部为null情况 userIds中元素有0(或负数)情况 userIds中元素全部为0(或负数)情况 组合条件测试 这种方法,...在这个例子中,userIds可能有两种类型,但是我们这个接口需要支持这两种类型,因此测试用例设计如下: userIds中为纯粹类型1数据 userIds中为纯粹类型2数据 userIds中为类型...本文首发于个人网站,链接:如何设计接口测试用例

    1.4K20

    问与答81: 如何求一组数据中满足多个条件最大

    Q:在工作表中有一些数据,如下图1所示,我想要获取“参数3”等于“A”、”参数4“等于”C1“对应”参数5”中最大,能够使用公式解决吗? ? 图1 A:这种情况用公式很容易解决。...在单元格F13中输入数组公式: =MAX(IF((参数3=D13)*(参数4=E13),参数5,0)) 记得按Ctrl+Shift+Enter组合键完成输入。...我们看看公式中: (参数3=D13)*(参数4=E13) 将D2:D12中与D13中比较: {"A";"B";"A";"B";"A";"A";"B";"A";"B";"A";"A"}=”A”...得到: {TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE} 将E2:E12中与E13中比较: {"C1";"C2";"C1"...D和列E中包含“A”和“C1”对应列F中和0组成数组,取其最大就是想要结果: 0.545 本例可以扩展到更多条件。

    3.9K30

    【机器学习实战】第11章 使用 Apriori 算法进行关联分析

    支持度 和 可信度 是用来量化 关联分析 是否成功一个方法。 假设想找到支持度大于 0.8 所有项集,应该如何去做呢?...接着扫描交易记录来查看哪些项集满足最小支持度要求,那些不满足最小支持度要求集合会被去掉。 燃尽后对生下来集合进行组合以声场包含两个元素项集。...,只存储支持满足频繁项集 retList.insert(0, key) # 存储所有的候选项(key)和对应支持度(support) supportData...def apriori(dataSet, minSupport=0.5): """apriori(首先构建集合 C1,然后扫描数据集来判断这些只有一个元素项集是否满足最小支持要求。...前面我们介绍了用于发现 频繁项集  Apriori 算法,现在要解决问题是如何找出 关联规则。

    1.8K60

    Apriori 算法-如何进行关联规则挖掘

    我们可以用支持度来衡量频繁。 支持度是针对项集来说,一个项集支持度就是该项集记录占总记录比例。通常可以定义一个最小支持度,从而只保留满足最小支持项集。...3,如何寻找频繁项 寻找频繁项一个简单粗暴方法是,对所有的物品进行排列组合,然后计算所有组合支持度,这种算法也可以叫做穷举法。 穷举法 穷举法就是列出所有物品组合,然后计算每种组合支持度。...该参数取值范围是 [0, 1],表示一个百分比,比如0.3 表示30%,那么支持度小于30% 项集将被舍去。 该参数默认为0.5,常见取值有0.5,0.1,0.05。...该参数取值范围也是 [0, 1]。 该参数默认为0.5,常见取值有1.0,0.9,0.8。...2000 年提出FP-Growth 算法,对 Apriori 算法进行了改进。FP-Growth 通过创建一棵 FP树来存储频繁项集。对不满足最小支持项不会创建节点,减少了存储空间。

    68540

    关联规则(二):Apriori算法

    那么所有可能被一起购买商品组合都有哪些? 这些商品组合可能只有一种商品,比如商品0,也可能包括两种、三种或者所有四种商品。...我们并不关心某人买了两件商品0 以及四件商品2 情况,我们只关心他购买了一种或多种商品。 下图显示了物品之间所有可能组合(格结构 lattice structure)。...这也就是说,一旦计算出了{2,3}支持度,知道它是非频繁之后,就不需要再计算{0,2,3}、{1,2,3}和{0,1,2,3}支持度,因为我们知道这些集合不会满足我们要求。 ?...3.1 支持度计算 对频繁项集发现基于支持计算,基于 apriori 方法 ?...,这个参数和 sklearn 中应该是一致,即指定计算时可使用最大核心数 返回:返回也是 dataframe 格式,由 支持度 和 项集 两列构成,各数据记录都是满足最小支持度和项集最大长度条件

    4.1K30

    寻找商品间联系:频繁项集挖掘与关联分析

    我们常常会在管理中遇到这样问题,超市如何能通过用户购买数据来提高利润。如何将数据转化为利润,用好这些数据。...超集就是包含这一项集其他集合,与子集概念相反,b是B子集,则B是b超集。 故已知一个是非频繁,即不满足设定支持度,其超集也不需要再次进行计算,以缩小计算量。...用Apriori算法来发现频繁集:首先对单个物品(元素)进行查找,看哪些满足最小支持度,即本身就出现很频繁,再将这些组合成两个元素项集,计算支持度,并去掉小于最小支持组合,从而进一步进行组合,即再加一项组合...我们为每个频繁项集生成关联规则,如果某条规则不满足最小可信度要求,那么所有子集也不满足。 生成关联规则需要:频繁项集列表、包含频繁项集支持数据字典、最小可信度。...构建FP树: 1、 遍历整个数据集,移除不满足最小支持元素项; 如果没有元素项满足要求,则退出 2、 根据全局频率对每个事务中元素进行排序 3、 使用排序后频率项集对树进行填充。

    1.3K81

    【机器学习】--关联规则算法从初识到应用

    置信度(Confidence):关联规则左件和右件同时出现频繁程度,该越大,表示同时出现几率越大。...如何来度量一个规则是否够好?有两个量,置信度(Confidence)和支持度(Support)。 假设有如下表购买记录。 ? 整理后如图: ?...支持度是针对项集来说,因此可以定义一个最小支持度,而只保留满足最小支持项集。 关联规则要求项集必须满足最小支持阈值,称为项集最小支持度(Minimum Support),记为supmin。...Apriori算法两个输入参数分别是最小支持度和数据集。...该算法首先会生成所有单个物品项集列表->接着扫描交易记录来查看哪些项集满足最小支持度要求,其中不满足最小支持集合会被去掉->然后对剩下集合进行组合以生成包含两个数据集项集->接着重新扫描交易记录

    55420

    【机器学习算法系列】如何Apriori寻找到繁杂数据之间隐藏关系

    大型超市有海量交易数据,我们可以通过聚类算法寻找购买相似物品的人群,从而为特定人群提供更具个性化服务。但是对于超市来讲,更有价值如何找出商品隐藏关联,从而打包促销,以增加营业收入。...我们并不关心某人买了两件商品0以及四件商品2情况,我们只关心他购买了一种或多种商品。   下图显示了物品之间所有可能组合。为了让该图更容易懂,图中使用物品编号0来取代物品0本身。...我们使用集合支持度来度量其出现频率。一个集合支持度是指有多少比例交易记录包含该集合。如何对一个给定集合,比如{0,3},来计算其支持度?...这也就是说,一旦计算出了{2,3}支持度,知道它是非频繁之后,就不需要再计算{0,2,3}、{1,2,3}和{0,1,2,3}支持度,因为我们知道这些集合不会满足我们要求。...C1.sort() return list(map(frozenset, C1)) #将候选集Ck转换为频繁项集Lk #D:原始数据集 #Cn: 候选集项Ck #minSupport:支持最小

    77630

    挖掘关联规则之Apriori算法

    支持度: 项集支持度是指包含该项集事务所占所有事务比例。 频繁项集:就是指满足给定最小支持项集。...Apriori思想: 我们希望置信度和支持度要满足我们阈值范围才算是有效规则,实际过程中我们往往会面临大量数据,如果只是简单搜索,会出现很多规则,相当大一部分是无效规则,效率很低,那么Apriori...此时我们看到L1是符合最低支持标准,那么下一次迭代我们依据L1产生C2(4就不再被考虑了),此时候选集如右图所示C2(依据L1*L1组合方式)确立。...C2每个集合得到支持度对应在我们原始数据组合计数,如下图左所示。 ?...此时,第二次迭代发现了{1 2} {1 5}支持度只有1,低于阈值,故而舍弃,那么在随后迭代中,如果出现{1 2} {1 5}组合形式将不被考虑。 ?

    1.2K60

    数据挖掘从入门到放弃(四):手撕(绘)关联规则挖掘算法

    搞懂关联规则中几个重要概念:支持度、置信度、提升度 Apriori 算法工作原理 在实际工作中,我们该如何进行关联规则挖掘 关联规则中重要概念 我举一个超市购物例子,下面是几名客户购买商品列表...Apriori 工作原理 我们一起来看下经典关联规则 Apriori 算法是如何工作。...频繁项集就是支持度大于等于最小支持度阈值项集,所以小于最小支持项目就是非频繁项集,而大于等于最小支持项集就是频繁项集。 下面我们来举个栗子: 假设我随机指定最小支持度是0.2。...因为采用排列组合方式,把可能项集都组合出来了 每次计算都需要重新扫描数据集,来计算每个项集支持度 这就好比我们数据库中“全表扫描”查询一样,非常浪费IO和时间。...首先创建,项头表,这一步流程是先扫描一遍数据集,对于满足最小支持单个项按照支持度从高到低进行排序,这个过程中删除了不满足最小支持项(假设最小支持度是0.2)。 ?

    90542

    挖掘关联规则之Apriori算法

    支持度: 项集支持度是指包含该项集事务所占所有事务比例。 频繁项集:就是指满足给定最小支持项集。...Apriori思想: 我们希望置信度和支持度要满足我们阈值范围才算是有效规则,实际过程中我们往往会面临大量数据,如果只是简单搜索,会出现很多规则,相当大一部分是无效规则,效率很低,那么Apriori...此时我们看到L1是符合最低支持标准,那么下一次迭代我们依据L1产生C2(4就不再被考虑了),此时候选集如右图所示C2(依据L1*L1组合方式)确立。...C2每个集合得到支持度对应在我们原始数据组合计数,如下图左所示。 ?...此时,第二次迭代发现了{1 2} {1 5}支持度只有1,低于阈值,故而舍弃,那么在随后迭代中,如果出现{1 2} {1 5}组合形式将不被考虑。 ?

    929120

    机器学习概念总结笔记(四)

    支持度是针对项集来说,因此可以定义一个最小支持度,而只保留满足最小尺度项集。可信度或置信度(confidence)是针对关联规则来定义。...假设我们有一家经营着4种商品(商品0,商品1,商品2和商品3)杂货店,2图显示了所有商品之间所有的可能组合: 对于单个项集支持度,我们可以通过遍历每条记录并检查该记录是否包含该项集来计算。...对于包含N中物品数据集共有2 N −1种项集组合,重复上述计算过程是不现实。 研究人员发现一种所谓Apriori原理,可以帮助我们减少计算量。...Apriori算法两个输入参数分别是最小支持度和数据集。该算法首先会生成所有单个元素项集列表。接着扫描数据集来查看哪些项集满足最小支持度要求,那些不满足最小支持集合会被去掉。...然后,对剩下来集合进行组合以生成包含两个元素项集。接下来,再重新扫描交易记录,去掉不满足最小支持项集。该过程重复进行直到所有项集都被去掉。

    2.1K00

    大数据开发,如何发掘数据关系?

    应该从哪里考虑着手,可使用最少计算资源寻找到最小支持频繁模式?寻找满足最小支持频繁模式经典算法是Apriori算法 Apriori算法 步骤 第1步:设置最小支持度阈值。...第3步:从第2步找到所有满足最小支持单件商品中,进行两两组合,寻找满足最小支持两件商品组合,也就是两件商品出现在同一个订单中概率不低于最小支持度。...第4步:从第3步找到所有满足最小支持两件商品,以及第2步找到满足最小支持单件商品进行组合,寻找满足最小支持三件商品组合。 第5步:以此类推,找到所有满足最小支持商品组合。...极大降低了需计算商品组合数目 算法原理 若一个商品组合满足最小支持度,则所有包含这个商品组合其他商品组合也不满足最小支持度。...所以从最小商品组合,即一件商品开始计算最小支持度,逐渐迭代,进而筛选出所有满足最小支持频繁模式。

    1K20

    如何使用Excel将某几列有标题显示到新列中

    如果我们有好几列有内容,而我们希望在新列中将有内容标题显示出来,那么我们怎么做呢? Excel - TEXTJOIN function 1....- - - - 4 - - - 在开始,我们曾经使用INDEX + MATCH方式,但是没有成功,一直是N/A https://superuser.com/questions/1300246/if-cell-contains-value-then-column-header...所以我们后来改为TEXTJOIN函数,他可以显示,也可以显示标题,还可以多个列有时候同时显示。...- - - 4 - - - 15 Year 5 - - - - 5 - - - =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),$B$1:$I$1,"")) 如果是想要显示...,则: =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),B2:I2,"")) 其中,ISNUMBER(B2:I2)是判断是不是数字,可以根据情况改成是不是空白ISBLANK

    11.3K40
    领券