热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Java实现的朴素贝叶斯算法示例

这篇文章主要介绍了Java实现的朴素贝叶斯算法,结合实例形式分析了基于java的朴素贝叶斯算法定义及样本数据训练操作相关使用技巧,需要的朋友可以参考下

本文实例讲述了Java实现的朴素贝叶斯算法。分享给大家供大家参考,具体如下:

对于朴素贝叶斯算法相信做数据挖掘和推荐系统的小伙们都耳熟能详了,算法原理我就不啰嗦了。我主要想通过java代码实现朴素贝叶斯算法,思想:

1. 用javabean +Arraylist 对于训练数据存储

2. 对于样本数据训练

具体的代码如下:

package NB;
/**
 * 训练样本的属性 javaBean
 *
 */
public class JavaBean {
 int age;
 String income;
 String student;
 String credit_rating;
 String buys_computer;
 public JavaBean(){
 }
public JavaBean(int age,String income,String student,String credit_rating,String buys_computer){
  this.age=age;
  this.income=income;
  this.student=student;
  this.credit_rating=credit_rating;
  this.buys_computer=buys_computer;
}
public int getAge() {
  return age;
}
public void setAge(int age) {
  this.age = age;
}
public String getIncome() {
  return income;
}
public void setIncome(String income) {
  this.income = income;
}
public String getStudent() {
  return student;
}
public void setStudent(String student) {
  this.student = student;
}
public String getCredit_rating() {
  return credit_rating;
}
public void setCredit_rating(String credit_rating) {
  this.credit_rating = credit_rating;
}
public String getBuys_computer() {
  return buys_computer;
}
public void setBuys_computer(String buys_computer) {
  this.buys_computer = buys_computer;
}
@Override
public String toString() {
  return "JavaBean [age=" + age + ", income=" + income + ", student="
      + student + ", credit_rating=" + credit_rating + ", buys_computer="
      + buys_computer + "]";
}
}

算法实现的部分:

package NB;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
public class TestNB {
  /**data_length
   * 算法的思想
   */
  public static ArrayList list = new ArrayList();;
  static int data_length=0;
  public static void main(String[] args) {
    // 1.读取数据,放入list容器中
    File file = new File("E://test.txt");
    txt2String(file);
    //数据测试样本
    testData(25,"Medium","Yes","Fair");
  }
  // 读取样本数据
  public static void txt2String(File file) {
    try {
      BufferedReader br = new BufferedReader(new FileReader(file));// 构造一个BufferedReader类来读取文件
      String s = null;
      while ((s = br.readLine()) != null) {// 使用readLine方法,一次读一行
        data_length++;
        splitt(s);
      }
      br.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  // 存入ArrayList中
   public static void splitt(String str){
      String strr = str.trim();
      String[] abc = strr.split("[\\p{Space}]+");
      int age=Integer.parseInt(abc[0]);
      JavaBean bean=new JavaBean(age, abc[1], abc[2], abc[3], abc[4]);
      list.add(bean);
    }
   // 训练样本,测试
   public static void testData(int age,String a,String b,String c){
     //训练样本
     int number_yes=0;
     int bumber_no=0;
     // age情况 个数
     int num_age_yes=0;
     int num_age_no=0;
     // income
     int num_income_yes=0;
     int num_income_no=0;
     // student
     int num_student_yes=0;
     int num_stdent_no=0;
     //credit
     int num_credit_yes=0;
     int num_credit_no=0;
     //遍历List 获得数据
     for(int i=0;inb_buy_no){
        System.out.println("新用户买的概率大");
      }else {
        System.out.println("新用户不买的概率大");
      }
   }
}

对于样本数据:

25  High    No  Fair       No
25  High    No  Excellent  No
33  High    No  Fair       Yes
41  Medium  No  Fair       Yes
41  Low     Yes Fair       Yes
41  Low     Yes Excellent  No
33  Low     Yes Excellent  Yes
25  Medium  No  Fair       No
25  Low     Yes Fair       Yes
41  Medium  Yes Fair       Yes
25  Medium  Yes Excellent  Yes
33  Medium  No  Excellent  Yes
33  High    Yes Fair       Yes
41  Medium  No  Excellent  No

对于未知用户的数据得出的结果:

购买的历史个数:9
不买的历史个数:5
购买+age:2
不买+age:3
购买+income:4
不买+income:2
购买+stundent:6
不买+student:1
购买+credit:6
不买+credit:2
训练数据中买的概率:0.6428571428571429
训练数据中不买的概率:0.35714285714285715
新用户买的概率:0.028218694885361547
新用户不买的概率:0.006857142857142858
新用户买的概率大

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 聚焦法是一种采用穷尽搜索策略的Filter型特征选择方法,其核心在于寻找能有效区分不同样本的最小特征集合。此方法的评估标准主要依赖于一致性测量。 ... [详细]
  • 智能全栈云风暴:AI引领的企业转型之路
    当提及AI,人们脑海中常浮现的是天才少年独自编写算法,瞬间点亮机器人的双眼。然而,真正的AI革命正由大型企业和机构推动,它们利用全栈全场景AI技术,实现数字化与智能化的深度转型。 ... [详细]
  • 本文深入探讨了数据挖掘领域内的十个经典算法,包括但不限于C4.5决策树、K-Means聚类、支持向量机等。这些算法不仅在理论上有深厚的数学基础,也在实践中展现出强大的应用价值。 ... [详细]
  • 本文探讨了数据挖掘技术的发展及其在大数据环境下的应用流程,重点介绍了统计学、在线分析处理、信息检索、机器学习、专家系统和模式识别等领域的最新进展。 ... [详细]
  • 解决getallheaders函数导致的500错误及8种服务器性能优化策略
    本文探讨了解决getallheaders函数引起的服务器500错误的方法,并介绍八种有效的服务器性能优化技术,包括内存数据库的应用、Spark RDD的使用、缓存策略的实施、SSD的引入、数据库优化、IO模型的选择、多核处理策略以及分布式部署方案。 ... [详细]
author-avatar
手机用户2502898863
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有