首页 > 学院 > 开发设计 > 正文

NaiveBayes(朴素贝叶斯算法)[分类算法]

2019-11-14 14:40:02
字体:
来源:转载
供稿:网友

Naïve Bayes(朴素贝叶斯)分类算法的实现

(1) 简介:

(2)   算法描述:

 

(3)  

  1 <?php  2 /*  3 *Naive Bayes朴素贝叶斯算法(分类算法的实现)  4 */  5   6 /*  7 *把.txt中的内容读到数组中保存  8 *$filename:文件名称  9 */ 10 //-------------------------------------------------------------------- 11 function  getFileContent($filename) 12 { 13     $array = array(null); 14     $content = file_get_contents($filename); 15     $result = explode("/r/n",$content); 16     //PRint_r(count($result)); 17     for($j=0;$j<count($result);$j++) 18     { 19         //print_r($result[$j]."<br>"); 20         $con = explode(" ",$result[$j]); 21         array_push($array,$con); 22     } 23     array_splice($array,0,1); 24     return $array; 25 } 26 //-------------------------------------------------------------------- 27  28  29 /* 30 *NaiveBayes朴素贝叶斯算法 31 *$test:测试文本;$train:训练文本;$flagsyes:yes;$flagsno:no 32 */ 33 //-------------------------------------------------------------------- 34 function  NaiveBayes($test,$train,$flagsyes,$flagsno) 35 { 36     $count_yes = 0; 37     $num = count($train[0]); 38     for($i=1;$i<count($train);$i++) 39     { 40         if($train[$i][$num-1]==$flagsyes)$count_yes++; 41     } 42     $p_yes = $count_yes / (count($train)-1); 43     $p_no = 1- $p_yes; 44      45     $count_no = count($train)-1 - $count_yes; 46  47      48     for($i=1;$i<count($test)-1;$i++) 49     { 50         $testnumyes = 0; 51         $testnumno = 0; 52         for($j=1;$j<count($train);$j++) 53         { 54             if(($train[$j][$i]==$test[$i])&&($train[$j][count($test)-1]==$flagsyes))$testnumyes++; 55             else if(($train[$j][$i]==$test[$i])&&($train[$j][count($test)-1]==$flagsno))$testnumno++; 56         } 57          58         $array_yes[$i] = $testnumyes / $count_yes ; 59         $array_no[$i] = $testnumno / $count_no ; 60 /*         61         print_r($testnumyes."<br>"); 62         print_r($testnumno."<br>"); 63         print_r($count_yes."<br>"); 64         print_r($count_no."<br>"); 65         print_r($array_no[$i]."<br>"); 66 */     67     } 68  69     $py=1; 70     $pn=1; 71     for($i=1;$i<count($test)-1;$i++){ 72         $py *= $array_yes[$i]; 73         $pn *= $array_no[$i]; 74     } 75      76     $py *= $p_yes; 77     $pn *= $p_no; 78      79     if($py>$pn)return $flagsyes; 80     else return $flagsno; 81      82 /*    print_r($py."<br>"); 83         print_r($pn."<br>"); 84 */     85      86 } 87 //-------------------------------------------------------------------- 88  89 $train = getFileContent("train.txt"); 90 $test = getFileContent("test.txt"); 91  92 for($i=1;$i<count($test);$i++) 93 { 94     $test[$i][count($test[0])-1] = NaiveBayes($test[$i],$train,Y,N); 95 } 96  97 /* 98 *将数组中的内容读到.txt中 99 */100 //--------------------------------------------------------------------101 $fp= fopen('result.txt','wb');102 for($i=0;$i<count($test);$i++)103 {104     $temp = NULL;105     for($j=0;$j<count($test[$i]);$j++)106     {107         $temp =  $test[$i][$j]."/t";108         fwrite($fp,$temp);109     }110     fwrite($fp,"/r/n");111 }112 fclose($fp);113 //--------------------------------------------------------------------114 115 /*116 *打印输出117 */118 //--------------------------------------------------------------------119 echo "<pre>";120 print_r($test);121 echo "</pre>";122 //--------------------------------------------------------------------123 ?>

 

 

 

  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表