聚类算法k-Modes的实现
1 "; 65 print_r($M); 66 */ 67 return $M; 68 } 69 //-------------------------------------------------------------------- 70 71 72 /* 73 *获得距离dis(ml,ei) 74 */ 75 //-------------------------------------------------------------------- 76 function dis($array,$e) 77 { 78 $temp = $array; 79 $sum = 0; 80 for($i=1;$i";174 //print_r($W);175 echo " ";176 print_r($fwm);177 */ 178 return $fwm;179 }180 //--------------------------------------------------------------------181 182 183 /*184 *获得新的矩阵M单行元素185 */186 //--------------------------------------------------------------------187 function New_SingleM($array)188 {189 $new_m = array();190 array_splice($new_m,0,1);191 for($i=1;$i$max[1])216 {217 $max[0]=$temp[$j][0];218 $max[1]=$temp[$j][1];219 }220 }221 array_push($new_m,$max[0]);222 /* 223 echo " ";224 print_r($temp);225 print_r($max[0]);226 */227 }228 /*229 echo "";230 print_r($new_m);231 */232 return $new_m;233 }234 //--------------------------------------------------------------------235 236 237 /*238 *获得新的矩阵M239 */240 //--------------------------------------------------------------------241 function New_M($train,$W)242 {243 $new_train = array(NULL);244 array_splice($new_train,0,1);245 for($i=1;$i";265 print_r($new_train);266 267 echo " ";268 print_r($new_M);269 */270 return $new_M;271 }272 //--------------------------------------------------------------------273 274 275 /*276 *Kmodes算法277 *$m,&$w,返回矩阵M,W278 */279 //--------------------------------------------------------------------280 function Kmodes($train,&$m,&$w)281 {282 $M = first_M($train);283 $FWM = 1;284 $FWM2 =0;285 while(abs($FWM2 - $FWM)>0)286 {287 $W = W($train,$M);288 $FWM = F_W_M($train,$M,$W);289 $M = New_M($train,$W);290 $FWM2 = F_W_M($train,$M,$W);291 292 if(abs($FWM2 - $FWM )>0)293 {294 $FWM = $FWM2;295 $W = W($train,$M2);296 $FWM2 = F_W_M($train,$M,$W);297 }298 }299 $m = $M;300 $w = $W;301 }302 //--------------------------------------------------------------------303 304 305 /*306 *把.txt中的内容读到数组中保存307 *$filename:文件名称308 */309 //--------------------------------------------------------------------310 function getFileContent($filename)311 {312 $array = array(null);313 $content = file_get_contents($filename);314 $result = explode("\r\n",$content);315 //print_r(count($result));316 for($j=0;$j