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

(1) 简介:

(2)   算法描述:

(3)

 <?php
/*
*Naive Bayes朴素贝叶斯算法(分类算法的实现)
*/ /*
*把.txt中的内容读到数组中保存
*$filename:文件名称
*/
//--------------------------------------------------------------------
function getFileContent($filename)
{
$array = array(null);
$content = file_get_contents($filename);
$result = explode("\r\n",$content);
//print_r(count($result));
for($j=0;$j<count($result);$j++)
{
//print_r($result[$j]."<br>");
$con = explode(" ",$result[$j]);
array_push($array,$con);
}
array_splice($array,0,1);
return $array;
}
//-------------------------------------------------------------------- /*
*NaiveBayes朴素贝叶斯算法
*$test:测试文本;$train:训练文本;$flagsyes:yes;$flagsno:no
*/
//--------------------------------------------------------------------
function NaiveBayes($test,$train,$flagsyes,$flagsno)
{
$count_yes = 0;
$num = count($train[0]);
for($i=1;$i<count($train);$i++)
{
if($train[$i][$num-1]==$flagsyes)$count_yes++;
}
$p_yes = $count_yes / (count($train)-1);
$p_no = 1- $p_yes; $count_no = count($train)-1 - $count_yes; for($i=1;$i<count($test)-1;$i++)
{
$testnumyes = 0;
$testnumno = 0;
for($j=1;$j<count($train);$j++)
{
if(($train[$j][$i]==$test[$i])&&($train[$j][count($test)-1]==$flagsyes))$testnumyes++;
else if(($train[$j][$i]==$test[$i])&&($train[$j][count($test)-1]==$flagsno))$testnumno++;
} $array_yes[$i] = $testnumyes / $count_yes ;
$array_no[$i] = $testnumno / $count_no ;
/*
print_r($testnumyes."<br>");
print_r($testnumno."<br>");
print_r($count_yes."<br>");
print_r($count_no."<br>");
print_r($array_no[$i]."<br>");
*/
} $py=1;
$pn=1;
for($i=1;$i<count($test)-1;$i++){
$py *= $array_yes[$i];
$pn *= $array_no[$i];
} $py *= $p_yes;
$pn *= $p_no; if($py>$pn)return $flagsyes;
else return $flagsno; /* print_r($py."<br>");
print_r($pn."<br>");
*/ }
//-------------------------------------------------------------------- $train = getFileContent("train.txt");
$test = getFileContent("test.txt"); for($i=1;$i<count($test);$i++)
{
$test[$i][count($test[0])-1] = NaiveBayes($test[$i],$train,Y,N);
} /*
*将数组中的内容读到.txt中
*/
//--------------------------------------------------------------------
$fp= fopen('result.txt','wb');
for($i=0;$i<count($test);$i++)
{
$temp = NULL;
for($j=0;$j<count($test[$i]);$j++)
{
$temp = $test[$i][$j]."\t";
fwrite($fp,$temp);
}
fwrite($fp,"\r\n");
}
fclose($fp);
//-------------------------------------------------------------------- /*
*打印输出
*/
//--------------------------------------------------------------------
echo "<pre>";
print_r($test);
echo "</pre>";
//--------------------------------------------------------------------
?>

  

Naive Bayes(朴素贝叶斯算法)[分类算法]的更多相关文章

  1. 模式识别之线性判别---naive bayes朴素贝叶斯代码实现

    http://blog.csdn.net/xceman1997/article/details/7955349 http://www.cnblogs.com/yuyang-DataAnalysis/a ...

  2. 机器学习集成算法--- 朴素贝叶斯,k-近邻算法,决策树,支持向量机(SVM),Logistic回归

    朴素贝叶斯: 是使用概率论来分类的算法.其中朴素:各特征条件独立:贝叶斯:根据贝叶斯定理.这里,只要分别估计出,特征 Χi 在每一类的条件概率就可以了.类别 y 的先验概率可以通过训练集算出 k-近邻 ...

  3. 3.朴素贝叶斯和KNN算法的推导和python实现

    前面一个博客我们用Scikit-Learn实现了中文文本分类的全过程,这篇博客,着重分析项目最核心的部分分类算法:朴素贝叶斯算法以及KNN算法的基本原理和简单python实现. 3.1 贝叶斯公式的推 ...

  4. PGM:贝叶斯网表示之朴素贝叶斯模型naive Bayes

    http://blog.csdn.net/pipisorry/article/details/52469064 独立性质的利用 条件参数化和条件独立性假设被结合在一起,目的是对高维概率分布产生非常紧凑 ...

  5. [机器学习] 分类 --- Naive Bayes(朴素贝叶斯)

    Naive Bayes-朴素贝叶斯 Bayes' theorem(贝叶斯法则) 在概率论和统计学中,Bayes' theorem(贝叶斯法则)根据事件的先验知识描述事件的概率.贝叶斯法则表达式如下所示 ...

  6. 朴素贝叶斯算法——实现新闻分类(Sklearn实现)

    1.朴素贝叶斯实现新闻分类的步骤 (1)提供文本文件,即数据集下载 (2)准备数据 将数据集划分为训练集和测试集:使用jieba模块进行分词,词频统计,停用词过滤,文本特征提取,将文本数据向量化 停用 ...

  7. Python机器学习笔记:朴素贝叶斯算法

    朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.对于大多数的分类算法,在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.比如决策树,KNN,逻辑回归,支持向 ...

  8. 机器学习---朴素贝叶斯与逻辑回归的区别(Machine Learning Naive Bayes Logistic Regression Difference)

    朴素贝叶斯与逻辑回归的区别: 朴素贝叶斯 逻辑回归 生成模型(Generative model) 判别模型(Discriminative model) 对特征x和目标y的联合分布P(x,y)建模,使用 ...

  9. NLP系列(4)_朴素贝叶斯实战与进阶

    作者: 寒小阳 && 龙心尘 时间:2016年2月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50629608 htt ...

随机推荐

  1. js继承模式

    组合继承是js常用的继承模式,指的是将原型链和借用构造函数的技术结合在一起.其中的思想是使用原型链实现原型属性和方法的继承, 而通过借用构造函数实现对属性的继承. 例子: <script> ...

  2. 【04】基础:将采集结果转成Excel

    前面的教程说了,数据抓取完毕之后,数据以xml格式的形式存储在本地文件夹中. 下面简单地说一下如何将保存在本地的XML文件转成Excel格式. 第一步:压缩文件 进入本地DataScraperWork ...

  3. linux mysql 优化

    第一 在 /etc/my.cnf 中加入 skip-name-resolve ,重启mysql,这样就能禁用DNS解析,连接速度会快很多.不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用 ...

  4. js加载优化

    阻塞特性:       JS 有个很无语的阻塞特性,就是当浏览器在执行JS 代码时,不能同时做其他任何事情,无论其代码是内嵌的还是外部的. 脚本位置:       浏览器在碰到一个引入外部JS 文件的 ...

  5. Why Does Qt Use Moc for Signals and Slots(QT官方的解释:GUI可以是动态的)

    GUIs are Dynamic C++ is a standarized, powerful and elaborate general-purpose language. It's the onl ...

  6. Qt Project的持续集成方案

    作者:齐亮链接:http://www.zhihu.com/question/24314354/answer/27547787来源:知乎著作权归作者所有,转载请联系作者获得授权. PETER HARTM ...

  7. live555学习之RTSP连接建立以及请求消息处理过程

    1,RTSP连接的建立过程    RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话.    首先创建RTSP服务 ...

  8. 上传form表单

    <form name="theForm" method="post" action="index.php?m=back&c=Goods& ...

  9. 什么是FastCGI?

    什么是FastCGI? PHP的FastCGI使你的所有php应用软件通过mod_fastci运行,而不是mod_phpsusexec.FastCGI应用速度很快 是因为他们持久稳定.不必对每一个请求 ...

  10. FreeMarker的模板文件语法

    FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输 ...