在数据挖掘中, 关联规则挖掘是较为重要的处理。而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
php数据挖掘,数据挖掘 apriori算法的 php实现
最新推荐文章于 2021-04-10 19:56:40 发布