手写识别之朴素贝叶斯

       在前面的几篇文章中,都对手写识别进行了一些讲解,这里主要是介绍一下通过另外一种方法来进行识别---------朴素贝叶斯。。自己也是处于机器学习路上的一名新手,如果有什么讲解不对的话,欢迎大家进行交流,可以把建议写到下面。。。。

      好了,不多说,进入正题。。朴素贝叶斯,我相信,搞机器学习的人都不会陌生,关于它的一些基本概念我就不说了,如果还有什么不明白的地方,可以去百度查查它的理论知识。我主要就是对于手写识别来进行针对性的讲解。

    就把朴素贝叶斯中,最为关键的公式贴出来:

    

    一:关于训练集数据

       这部分,我在前面的文章中,进行了讲解,而且数据集我也分享到了百度云,如果有需要的可以翻看一下前面的那篇神经网络的文章进行下载。

    二:朴素贝叶斯的实践

       这里讲解一下,大概的步骤吧。其实了解朴素贝叶斯的话,应该很好理解如何进行实施的,毕竟这算法的优点就是通过概率来预测的这么一种简单的方法。  (就把自己做课程报告中PPT写的东西贴出来)

         

         

        我想,如果了解朴素贝叶斯的基本理念再加上上面的一些提示,那么应该就知道如何进行实施了。。下面就是代码(Java语言)::

        1:读取训练集数据(.csv后缀的文件)

            

package beiyesifenleiqi;

/*
 * 读取后缀为csv的excell文件
 * 
 */


import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class CSVFileUtil {
	 private String fileName = null;
     private BufferedReader br = null;
     private List<String> list = new ArrayList<String>();

     public CSVFileUtil() {

     }

     public CSVFileUtil(String fileName) throws Exception {
             this.fileName = fileName;
             br = new BufferedReader(new FileReader(fileName));
             String stemp;
             while ((stemp = br.readLine()) != null) {
                     list.add(stemp);
             }
     }

     public List getList() {
             return list;
     }
     /**
      * 获取行数
      * @return
      */
     public int getRowNum() {
             return list.size();
     }
     /**
      * 获取列数
      * @return
      */
     public int getColNum() {
             if (!list.toString().equals("[]")) {
                     if (list.get(0).toString().contains(",")) {// csv为逗号分隔文件
                             return list.get(0).toString().split(",").length;
                     } else if (list.get(0).toString().trim().length() != 0) {
                             return 1;
                     } else {
                             return 0;
                     }
             } else {
                     return 0;
             }
     }
     /**
      * 获取制定行
      * @param index
      * @return
      */
     public String getRow(int index) {
             if (this.list.size() != 0) {
                     return (String) list.get(index);
             } else {
                     return null;
             }
     }
     /**
      * 获取指定列
      * @param index
      * @return
      */
     public String getCol(int index) {
             if (this.getColNum() == 0) {
                     return null;
             }
             StringBuffer sb = new StringBuffer();
             String tmp = null;
             int colnum = this.getColNum();
             if (colnum > 1) {
                     for (Iterator it = list.iterator(); it.hasNext();) {
                             tmp = it.next().toString();
                             sb = sb.append(tmp.split(",")[index] + ",");
                     }
             } else {
                     for (Iterator it = list.iterator(); it.hasNext();) {
                             tmp = it.next().toString();
                             sb &#
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值