- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
生物信息学 贝叶斯算法编程实现
算法课程设计报告
(算法编程实现类)
贝叶斯算法编程实现
院 系 部 门: 重庆邮电大学
学 生 学 号: *********
学 生 姓 名: *********
指 导 教 师: *****
生物信息学院制
2013年5月
第一部分 贝叶斯算法研究背景、特点与发展 3
1.1 贝叶斯算法研究背景 3
1.2 贝叶斯算法特点 3
1.3 贝叶斯算法发展 3
第二部分 算法分析与程序流程图设计 3
2.1、基于对问题的分析 4
2.2、基于对问题的java算法分析 4
2.2、程序流程图设计 5
第三部分 实现设计语言选择与算法编程实现 5
3.1、java算法实现 5
第四部分 程序测试与结果分析 10
4.1程序测试 10
4.2结果分析 11
第五部分 总结与心得体会 11
5.1总结与心得体会 11
第六部分 参考文献 12
6.1参考文献(2个) 12
第一部分 贝叶斯算法研究背景、特点与发展
1.1 贝叶斯算法研究背景
贝叶斯分类算法是统计学分类方法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Na?ve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,且方法简单、分类准确率高、速度快。由于贝叶斯定理假设一个属性值对给定类的影响独立于其它属性的值,而此假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。为此,就出现了许多降低独立性假设的贝叶斯分类算法,如TAN(tree augmented Bayes network)算法。
1.2 贝叶斯算法特点
和决策树模型相比,朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以 及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。 但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。在属 性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。
1.3 贝叶斯算法发展
贝叶斯分类理论有最初的朴素贝叶斯于EM算法,灰色关系继续发展为基于改进EM的朴素贝叶斯分类理论。
第二部分 算法分析与程序流程图设计
2.1、基于对问题的分析
对问题进行分析,设X是类标号未知的数据样本,设H为某种假的,如数据养本X属于某特定的类C。对与分类问题,希望确定P(H|X),即给定观测数据样本X,假定H成立的概率。贝叶斯定理给出了如下计算P(H|X)的简单有效的方法:
P(H|X)=P(X|H)P(H)/P(X)
其中P(H)称为先验概率,P(X|H)表示假设H成立时观查到X的概率。
P(H|X)表示后验概率。
每一个样本数据用一个n维特征向量X={x1,x2,x3,…,xn}表示,分别描述具有n个属性A1,A1,…An的样本的n个度量。
假定有m个类C1,C2,…,Cm,给定一个未知数据样本X(即没有类编号),分类器将预测X属性与最高后验概率的类。也就是说,朴素贝叶斯分类将未知样本分配给Ci(1=i=m),当且仅当P(Ci|X)P(Cj|X),j=1,2,…m,j不等于i这样最大的P(Ci|X)对应的类Ci称为最大后验假定。
由于P(X)对于所有类是常数,只需要P(X|Ci)P(Ci)最大即可。注意假设不是等概率的,那么类的先验概率可以用P(Ci)=si/s计算,其中si是类Ci的训练样本数,而s是训练样本总数。P(X|Ci)=
2.2、基于对问题的java算法分析
首先需要将所有的训练数据读入到ArrayListArrayListString对象集合中去,其中每一条训练数据对应一个ArrayListString对象集合。
同理用readTestData()将测试元组读如ArrayListString对象集合中去。
下面就需要将ArrayListArrayListString中的每一组训练元组按照类别属性分开,保存到MapString, ArrayListArrayListString对象中去
用三重for循环来计算测试元组中每一属性所在每一个类别中概率的之积,并返回最大积所对应的类别名称。
2.2、程序流程图设计
第三部分 实现设计语言选择与算法编程实现
3.1、java算法实现
package org.decimalcalculate;
import java.math.BigDecimal;
public class DecimalCalculate {
文档评论(0)