伪Apriori算法

时间:2013-03-08 13:00:29

标签: php algorithm loops apriori

我有一个具有ID属性的对象数组,我需要将它们链接在一个表中。

我想将链接在一起的对象ID插入到2列MySQL表中。

相关表格有两列: A B 。我想将对象集合链接在一起,没有任何重叠。

我将它称为伪先验,因为它类似于apriori算法的候选生成过程。

对于下面的示例,我有五个ID值为1-5的对象。例如:$obj1->id == 1,依此类推。

示例表:

Input IDs:
{1, 2, 3, 4, 5}

Output DB Table:
-----------
| A  |  B |
-----------
| 1  |  2 |
| 1  |  3 |
| 1  |  4 |
| 1  |  5 |
| 2  |  3 |
| 2  |  4 |
| 2  |  5 |
| 3  |  4 |
| 3  |  5 |
| 4  |  5 |
-----------

3 个答案:

答案 0 :(得分:2)

真的不知道你要做什么。但是如果结果必须是表格示例,那么您可以使用以下循环来完成:

$arr = array(1, 2, 3, 4, 5);

for($i = 0; $i < count($arr); $i++) {
    for($j = $i+1; $j < count($arr); $j++) {
        // add db logic here
        $q = 'insert into table (' . $arr[$i] . ', ' . $arr[$j] . ')';
    }
}

以下是输出的jsFiddle示例:JsFiddle

答案 1 :(得分:2)

E.g。梨包Math_Combinatorics可以做到这一点。

<?php
require 'Math/Combinatorics.php';
$c = new Math_Combinatorics;
foreach( $c->combinations(array(1,2,3,4,5), 2) as $k ) {
    echo join(', ', $k), "\n";  
}

打印

1, 2
1, 3
1, 4
1, 5
2, 3
2, 4
2, 5
3, 4
3, 5
4, 5

答案 2 :(得分:-2)

请访问此地址:Apriori Algorithm in PHP

方法:setMaxScan(int),setMinSup(int),setMinConf(int),setDelimiter(string),getMinSup(void),getMinConf(void),getMaxScan(void),getDelimiter(void ),process(字符串或数组),printFreqItemsets(void),getFreqItemsets(void),printAssociationRules(void),getAssociationRules(void),saveFreqItemsets(string),saveAssociationRules(string)