php数据挖掘,数据挖掘 apriori算法的 php实现

在数据挖掘中, 关联规则挖掘是较为重要的处理。而apriori算法则是关联规则挖掘中最基本的一种算法。我将这次期考试中用c实现的apriori算法用php重写出来,希望php爱好者在做挖掘分析程序设计时有一定的启发。仅用函数实现,没有封装$transaction['item1']="i1,i2,i5";$transaction['item2']="i2,i4";$transaction['item3']="i2,i3";$transaction['item4']="i1,i2,i4";$transaction['item5']="i1,i3";$transaction['item6']="i2,i3";$transaction['item7']="i1,i3";$transaction['item8']="i1,i2,i3,i5";$transaction['item9']="i1,i2,i3";$c1=gen_c1($transaction);$l1=gen_l1($c1,1);//生成c1for($k=1;;$k++){        ${'c'.($k+1)}=gen_ck(${'l'.$k},($k+1),$transaction,2);        ${'l'.($k+1)}=${'c'.($k+1)};        if(empty(${'c'.($k+1)}))        {                exit;        }        else        {                print_r(${'c'.($k+1)});                echo "
";        }        //${'l'.($k+1)}=gen_lk(${'l'.$k},($k+1));}        //print_r($c1);        echo "
";        print_r($c2);        echo "
";        print_r($c3);        echo "
";        print_r($c4);        echo "
";        print_r($c5);        echo "
";         function gen_ck($l,$k,$t,$sup=2){        $array_row=0;        for($i=0;$i".$l[$j]['item'];                        //echo "
";                        $temp_array=array();                        $match=true;                        if($k>2)                        {                                $split_array_i=split(',',$l[$i]['item']);//将ck的一项中的item中的数据分解到一个数组中                                //print_r($split_array_i);                                //echo " i
";                                $split_array_j=split(',',$l[$j]['item']);                                //print_r($split_array_j);                                //echo " j
";                                                                for($i3=0;$i3";                                }                                //${'c'.$k}[$array_row]['item']=$temp_array[0].",".$temp_array[1];                                $temp_string='';                                for($i4=0;$i4";                                                                $temp_string=substr($temp_string,0,strlen($temp_string)-1);//去尾部逗号,在本模块中只能用这种方法去掉末尾逗号                                //${'c'.$k}[$array_row]['item']=$temp_string;                                //${'c'.$k}[$array_row]['support']=1;                                $c[$array_row]['item']=$temp_string;                                $c[$array_row]['support']=1;                                $array_row++;                        }                        else                        {                                //echo "not match";                        }                }        }        //print_r(${'c'.$k});        //支持度统计        for($i=0;$i".$temp_array[$i2];                                if(strpos($t['item'.$i1],$temp_array[$i2])===false)                                {                                        $temp_support1=false;                                }                                                        }                        if($temp_support1)                        {                                $temp_support++;                        }                                }                //echo $temp_support;                //echo "
";                $c[$i]['support']=$temp_support;        }        //删除支持小于最小置信度的项目        $temp_array=array();        $array_row=0;        for($i=0;$i=$sup)                {                        $temp_array[$array_row]['item']=$c[$i]['item'];                        $temp_array[$array_row]['support']=$c[$i]['support'];                        $array_row++;                }        }        $c=$temp_array;        return $c;}function gen_lk($c){        }function gen_c1($t){        $array_row=0;        for($i=1;$i<=count($t);$i++)        {                $temp_array=array();                $temp_array=split(',',$t['item'.$i]);                foreach ($temp_array as $temp_value)                {                        if(in_array_two_dimension(&$c,$temp_value))//值已存在于ck数组中,增加计数                        {                                //$c[$array_row]['support']++;                        }                        else//新值入践                        {                                $c[$array_row]['item']=$temp_value;                                $c[$array_row]['support']=1;                                $array_row++;                        }                }        }        return $c;}function gen_l1($c1,$sup=2){        $array_row=0;        $temp_array=array();        for($i=0;$i$sup)                {                        $temp_array[$array_row]['item']=$c1[$i]['item'];                        $temp_array[$array_row]['support']=$c1[$i]['support'];                        $array_row++;                }        }        return $temp_array;        }function in_array_two_dimension($array,$value){        for($i=0;$i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值