zoukankan      html  css  js  c++  java
  • Naive Bayes(朴素贝叶斯算法)[分类算法]

    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("
    ",$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]."	";
    108         fwrite($fp,$temp);
    109     }
    110     fwrite($fp,"
    ");
    111 }
    112 fclose($fp);
    113 //--------------------------------------------------------------------
    114 
    115 /*
    116 *打印输出
    117 */
    118 //--------------------------------------------------------------------
    119 echo "<pre>";
    120 print_r($test);
    121 echo "</pre>";
    122 //--------------------------------------------------------------------
    123 ?>

     

      

  • 相关阅读:
    大端法小端法以及判断方法
    多线程的同步互斥
    LeetCode344 字符串反转
    LeetCode977 有序数组的平方
    剑指54 二叉搜索树的第k大节点
    Linux抓包工具tcpdump使用总结,WireShark的过滤用法
    二进制部署k8s集群(8):安装容器网络插件Flannel
    python--Yaml操作
    python--读写excle执行测试用例
    python--安装、操作mysql数据库
  • 原文地址:https://www.cnblogs.com/minmsy/p/4962524.html
Copyright © 2011-2022 走看看