·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> NaiveBayes(朴素贝叶斯算法)[分类算法]

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

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23

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 ?>