当前位置:Gxlcms > PHP教程 > NaiveBayes(朴素贝叶斯算法)[分类算法],naivebayes_PHP教程

NaiveBayes(朴素贝叶斯算法)[分类算法],naivebayes_PHP教程

时间:2021-07-01 10:21:17 帮助过:26人阅读

Naive Bayes(朴素贝叶斯算法)[分类算法],naivebayes


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]."
");
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."
");
62 print_r($testnumno."
");
63 print_r($count_yes."
");
64 print_r($count_no."
");
65 print_r($array_no[$i]."
");
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."
");
83 print_r($pn."
");
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 "
";
120 print_r($test);
121 echo "
"; 122 //-------------------------------------------------------------------- 123 ?>

  

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1070666.htmlTechArticleNaive Bayes(朴素贝叶斯算法)[分类算法],naivebayes Nave Bayes(朴素贝叶斯)分类算法的实现 (1) 简介: (2) 算法描述: (3) 1 ? php 2 /* 3 *Naive Bayes朴素...

人气教程排行