一步一步构建自己的BayesNet代码-基于Weka

2024-01-05 07:58

本文主要是介绍一步一步构建自己的BayesNet代码-基于Weka,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先要把握清楚BayesNet大体上是怎么用:有一个主特征:Class,目的就是判断这个Class的值,BayesNet从训练数据中学习出一个模型,用这个模型做预测,预测测试数据中的Class的值,每个实例是一行,Class T1 T2......Tn T是指特征也就是属性。所以我们的目标任务功能就是自己写代码,完成上述这个过程。好了现在开始。

(套用Weka中的解释:

WEKA把分类(Classification)和回归(Regression)都放在“Classify”选项卡中,这是有原因的。 在这两个任务中,都有一个目标属性(输出变量)。我们希望根据一个样本(WEKA中称作实例)的一组特征(输入变量),对目标进行预测。

 

 

 

 

然后具体分这么几步:

第一步:看基础入门教程,了解Weka是什么,我们能用什么

第二步:看贝叶斯网络,这里有两个,一个是官方的pdf文档http://weka.sourceforge.net/manuals/weka.bn.pdf

另外可以参看这个链接:

http://quweiprotoss.blog.163.com/blog/static/4088288320104273109869/  

这个步骤是为了让你知道weka中的贝叶斯原理

第三步:weka安装目录下有个mannul手册,教你怎么embed Weka Api到自己的应用,这一步就是直接开始写代码了,期间可以参考http://www.wekacn.org/viewforum.php?f=6中文论坛,以及weka安装目录下的java doc 还可以网上搜现成的例子,这一步我觉得应该以那个手册,mannul和java doc为主。

 

主要有用的参考资料 第三步中的mannul和java doc

 

 

 

 


第一步:看这篇入门《WEKA入门教程》  网上一搜就有,提供其中一个链接: http://blogold.chinaunix.net/u2/62093/showart_485477.html

 

简易总结:这个文档只能是给你一个概念,让你知道有哪些东西能用。具体怎么用后面再说

(1)数据格式很简单,不多讲,注意用引号控制有空格的情况,不然会被当成两个字符串,其他问题查看文档就行

(2) 数值型的属性进行离散化:这个蛮重要的, weka.filters.unsupervised.attribute.Discretize 这个是要用到的类,用的时候有设置参数什么的,还要调用Filter.useFilter.......主要是因为BayesNet的训练集必须是离散化的数据,所以一个方法是在前段产生数据的时候就用java离散化了,这个逻辑在生成数据之前就搞定,那么就不用调用这个filter了,第二个办法就是省去前面java的处理逻辑,允许生成连续的数据,然后调用Weka提供的Discretize搞定,看情况使用。

(3)这里就涉及到数据挖掘的算法了,这里我就只概括一下分类(其他的关联规则什么的请自行查看),先截一段很好的背景:

背景知识
WEKA把分类(Classification)和回归(Regression)都放在“Classify”选项卡中,这是有原因的。
在 这两个任务中,都有一个目标属性(输出变量)。我们希望根据一个样本(WEKA中称作实例)的一组特征(输入变量),对目标进行预测。为了实现这一目的, 我们需要有一个训练数据集,这个数据集中每个实例的输入和输出都是已知的。观察训练集中的实例,可以建立起预测的模型。有了这个模型,我们就可以新的输出 未知的实例进行预测了。衡量模型的好坏就在于预测的准确程度。
在WEKA中,待预测的目标(输出)被称作Class属性,这应该是来自分类任务的“类”。一般的,若Class属性是分类型时我们的任务才叫分类,Class属性是数值型时我们的任务叫回归。

然后我们这里要用到的分类: 当准确度只有69%左右不高的时候,也许我们需要对原属性进行处理,或者修改算法的参数来提高准确度。

这里需要弄清楚一个问题“算法到底是怎么判断怎么预测的,预测的标准是什么比如,贝叶斯,那么是看概率,那么这个概率大于多少才预测 那个class是yes or no呢”?

 

第二步:

http://weka.sourceforge.net/manuals/weka.bn.pdf+那个参考文档

简易总结:Bays = Bs(DAG)+Bp(CPT)  weka 中的Beiyes有两个要求,一个是离散化的数据,另一个是数据的值不能是null  整个学习的过程是先构建DAG在学习出CPT

 

第三步:to be continued~



这篇关于一步一步构建自己的BayesNet代码-基于Weka的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/572180

相关文章

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义