风也温柔

计算机科学知识库

java实现推荐算法实例_Java实现的朴素贝叶斯算法示例

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

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

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

  2. 对于样本数据训练

  具体的代码如下:

   NB;

  /**

  * 训练样本的属性

  *

  */

   class {

  int age;

   ;

   ;

   ;

   ;

   (){

  }

   (int age, , , , ){

  this.age=age;

  this.=;

  this.=;

  this.=;

  this.=;

  }

   int () {

   age;

  }

   void (int age) {

  this.age = age;

  }

   () {

   ;

  }

   void ( ) {

  this. = ;

  }

   () {

   ;

  }

   void ( ) {

  this. = ;

  }

   () {

   ;

  }

   void ( ) {

  this. = ;

  }

   () {

   ;

  }

   void ( ) {

  this. = ;

  }

  @

   () {

   " [age=" + age + ", =" + + ", ="

  + + ", =" + + ", ="

  + + "]";

  }

  }

  算法实现的部分:

   NB;

   java.io.;

   java.io.File;

   java.io.;

   java.util.;

   class {

  /**

  * 算法的思想

  */

   list = new ();;

   int =0;

   void main([] args) {

  // 1.读取数据java实现推荐算法实例,放入list容器中

  File file = new File("E://test.txt");

  (file);

  //数据测试样本

  (25,"","Yes","Fair");

  }

  // 读取样本数据

   void (File file) {

  try {

   br = new (new (file));// 构造一个类来读取文件

   s = null;

  while ((s = br.()) != null) {// 使用方法,一次读一行

  ++;

  (s);

  }

  br.close();

  } catch ( e) {

  e.();

  }

  }

  // 存入中

   void ( str){

   strr = str.trim();

  [] abc = strr.split("[\p{Space}]+");

  int age=.(abc[0]);

   bean=new (age, abc[1], abc[2], abc[3], abc[4]);

  list.add(bean);

  }

  // 训练样本,测试

   void (int age, a, b, c){

  //训练样本

  int =0;

  int =0;

  // age情况 个数

  int =0;

  int =0;

  //

  int =0;

  int =0;

  //

  int =0;

  int =0;

  //

  int =0;

  int =0;

  //遍历List 获得数据

  for(int i=0;i

   bb=list.get(i);

  if(bb.().("Yes")){ //Yes

  ++;

  if(bb.().(a)){//

  ++;

  }

  if(bb.().(b)){//

  ++;

  }

  if(bb.().(c)){//

  ++;

  }

  if(bb.()==age){//age

  ++;

  }

  }else {//No

  ++;

  if(bb.().(a)){//

  ++;

  }

  if(bb.().(b)){//

  ++;

  }

  if(bb.().(c)){//

  ++;

  }

  if(bb.()==age){//age

  ++;

  }

  }

  }

  .out.("购买的历史个数:"+);

  .out.("不买的历史个数:"+);

  .out.("购买+age:"+);

  .out.("不买+age:"+);

  .out.("购买+:"+);

  .out.("不买+:"+);

  .out.("购买+:"+);

  .out.("不买+:"+);

  .out.("购买+:"+);

  .out.("不买+:"+);

  概率判断

   =*1.0/; // 买的概率

   =*1.0/; // 不买的概率

  .out.("训练数据中买的概率:"+);

  .out.("训练数据中不买的概率:"+);

  /// 未知用户的判断

   =(1.0/)(1.0/)(1.0/)(1.0/);

   =(1.0/)(1.0/)(1.0/)(1.0/);

  .out.("新用户买的概率:"+);

  .out.("新用户不买的概率:"+);

  if(>){

  .out.("新用户买的概率大");

  }else {

  .out.("新用户不买的概率大");

  }

  }

  }

  对于样本数据:

  25 High No Fair No

  25 High No No

  33 High No Fair Yes

  41 No Fair Yes

  41 Low Yes Fair Yes

  41 Low Yes No

  33 Low Yes Yes

  25 No Fair No

  25 Low Yes Fair Yes

  41 Yes Fair Yes

  25 Yes Yes

  33 No Yes

  33 High Yes Fair Yes

  41 No No

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

  购买的历史个数:9

  不买的历史个数:5

  购买+age:2

  不买+age:3

  购买+:4

  不买+:2

  购买+:6

  不买+:1

  购买+:6

  不买+:2

  训练数据中买的概率:0.

  训练数据中不买的概率:0.

  新用户买的概率:0.

  新用户不买的概率:0.

  新用户买的概率大

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

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

  文章来源:https://blog.csdn.net/weixin_39884492/article/details/115090330