精华内容
下载资源
问答
  • 最小错误率贝叶斯决策

    千次阅读 2016-12-12 19:33:50
    在一般的模式识别问题中,人们的目标往往是尽量减少分类的错误,追求最小的错误率。根据之前的文章,即求解一种决策规则,使得: minP(e)=∫P(e|x)p(x)dx 这就是最小错误率贝叶斯决策。 在上式中,P(e|...

    原文链接:http://blog.csdn.net/angel_yuaner/article/details/47042817 

    在一般的模式识别问题中,人们的目标往往是尽量减少分类的错误,追求最小的错误率。根据之前的文章,即求解一种决策规则,使得:

    minP(e)=P(e|x)p(x)dx

    这就是 最小错误率贝叶斯决策

    在上式中, P(e|x)0,p(x)0 对于所有的 x 均成立,故 minP(e) 等同于对所有的 x 最小化 P(e|x) ,即:使后验概率 P(wi|x) 最大化。根据贝叶斯公式: 

    P(wi|x)=p(x|wi)P(wi)p(x)=p(x|wi)P(wi)kj=1p(x|wj)P(wj),i=1,2,...,k

    在上式中,对于所有类别,分母都是相同的,所以决策的时候实际上只需要比较分子,即: 

    p(x|wi)P(wi)=maxkj=1P(wj|x)P(wi),xwi

    先验概率 P(wi) 和类条件概率密度 p(x|wi) 是已知的。概率密度 p(x|wi) 反应了在 wi 类中观察到特征值x的相对可能性( likelihood )。

    举个简单的例子还说明最小错误贝叶斯决策。 
    假设某地区检测到细胞为正常细胞的概率 w1 和癌细胞的概率 w2 分别为: 

    w1=0.9,w2=0.1

    现在对于一个待决策的细胞,其特征的观察之为 x ,且从类条件概率密度曲线上分别查得: 
    p(x|w1)=0.2,p(x|w2)=0.4

    现在需要对该细胞进行决策,判断是正常细胞还是癌细胞。根据贝叶斯公式,分别计算出 w1 w2 的后验概率: 
    P(w1|x)=p(x|w1)P(w1)2j=1p(x|wj)P(wj)=0.2×0.90.2×0.9+0.4×0.1=0.818

    P(w2|x)=1P(w1|x)=0.182

    因为: P(w1|x)=0.818>0.182=P(w2|x) ,所以更合理的决策是将 x 归类为 w1 ,即正常细胞。

    说白了,贝叶斯决策就是将待分类物 x 归类于最大后验概率的那一类,即: 

    P(wi|x)=maxj=1,...,cP(wj|x),xwi

    等价于: p(x|wi)P(wi)=maxkj=1P(wj|x)P(wi),xwi  
    贝叶斯公式是用来计算后验概率的工具。

    对于多类别决策,错误率的计算量较大,可以转化为计算平均正确率 P(c) 来计算错误率: 

    P(e)=1P(c)=1j=1kP(xRi|wj)P(wj)1j=1kP(wj)Rjp(x|wj)dx
    展开全文
  • // 图片放大倍数,增强识别(很多图片本身无法识别,放大5倍时就可以轻易识,但是考滤到客户电脑配置低,针式打印机打印不连贯的问题,这里就放大5倍) textImage = ImageHelper.getScaledInstance(textImage, text...

    这是一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Office Document Imaging(MODI)相比,我们可以不断的训练的库,使图像转换文本的能力不断增强;如果团队深度需要,还可以以它为模板,开发出符合自身需求的OCR引擎。

    git地址为:https://github.com/tesseract-ocr/tesseract

    首先创建一个java项目 并集成 tesseract引擎库

    集成方式:

    1.jar包导入 需要导入以下jar包,集成方式比较繁琐

    2.maven库依赖导入 在maven项目中的pom文件中加入以下依赖

    <dependency>
        <groupId>net.sourceforge.tess4j</groupId>
        <artifactId>tess4j</artifactId>
        <version>4.1.1</version>
        <exclusions>
            <exclusion>
                <groupId>com.sun.jna</groupId>
                <artifactId>jna</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    java识别代码

       private static String ocr(String filePath) {
            String result = null;
            try {
                double start = System.currentTimeMillis();
                BufferedImage textImage = ImageIO.read(new File(filePath));
                // 这里对图片黑白处理,增强识别率.这里先通过截图,截取图片中需要识别的部分
                textImage = ImageHelper.convertImageToGrayscale(textImage);
                // 图片锐化
                textImage = ImageHelper.convertImageToBinary(textImage);
                // 图片放大倍数,增强识别率(很多图片本身无法识别,放大5倍时就可以轻易识,但是考滤到客户电脑配置低,针式打印机打印不连贯的问题,这里就放大5倍)
                textImage = ImageHelper.getScaledInstance(textImage, textImage.getWidth() * 1, textImage.getHeight() * 1);
    
                textImage = ImageHelper.convertImageToBinary(textImage);
                ImageIO.write(textImage, "png", new File("E:\\accccccccccccc\\img_temp.jpg"));
    
                Tesseract instance = new Tesseract();
                instance.setDatapath(System.getProperty("user.dir") + "\\tessdata");//设置训练库的位置
                instance.setLanguage("chi_simmm");//中文识别
                instance.setLanguage("chi_simm");//中文识别
                instance.setLanguage("chi_sim");//中文识别
    //            instance.setLanguage("chi_tra");//中文识别
    //            instance.setLanguage("eng");//英文识别
                result = instance.doOCR(textImage);
                double end = System.currentTimeMillis();
                System.out.println("耗时" + (end - start) / 1000 + " s");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }

    识别的图片为:

    这里可以通过动态的对图片做黑白、锐化、放大等操作来提高中文识别率

    经过处理后的图片为:

    识别结果为:

    可以看出经过训练后的库识别经过处理的图片的精度还是比较不错的,但是识别比较复杂场景的文字识别率还是有待提升;

    库文件需要自己识别训练生成训练库来提高识别率,不过目前网上的训练方法比较繁琐,后续文章会说明训练方法;

    *中文训练库文件以及demo文件下载地址https://download.csdn.net/download/intenttao/10812148

    *tesseract本地化引入jar文件下载地址https://download.csdn.net/download/intenttao/10812225

    展开全文
  • 针对目前典型通信中对错误概率的估计主要是依靠蒙特卡罗仿真的局限性,给出一种利用判决域的半径来估计错误率的方法,将伯努利实验样本用判决域半径样本替换.由于半径样本所含的信息量更加丰富,可以减少所需的样本数....
  • 针对目前典型通信中对错误概率的估计主要是依靠蒙特卡罗仿真的局限性,给出一种利用判决域的半径来估计错误率的方法,将伯努利实验样本用判决域半径样本替换.由于半径样本所含的信息量更加丰富,可以减少所需的样本数....
  • 1、贝叶斯公式 首先要知道贝叶斯公式: 其中,是先验概率,是条件概率,我们要求的是后验概率。...在模式分类时,我们的目标是尽量减少分类的错误,即追求最小的错误率,用式子表达就是: 这个...

    1、贝叶斯公式

    首先要知道贝叶斯公式:

    其中,是先验概率,是条件概率,我们要求的是后验概率。

    由于分母项在不管求样本的哪个后验概率时都是一样的,实际上我们需要关注的只是分子,因此有

    2、基于最小错误率的贝叶斯分类理论

    接下来阐释基于最小错误率的思想,以及贝叶斯公式在其中如何发挥作用。

    假设现在有两类模式,w1和w2

    就是当x属于w1时却分到了w2的概率,当x属于w2时却分到了w1的概率,这两种概率构成了错误概率

    画个样本空间X的后验概率图:

    在模式分类时,我们的目标是尽量减少分类的错误,即追求最小的错误率,用式子表达就是:

    这个式子的意思就是对所有的样本x,我们要最小化他们的P(e|x)。

    这样看其实还不知道怎么算,但如果使用贝叶斯公式来表达的话就很清楚了。

    可以看出最小化错误率就是最大化后验概率,因此在决策的时候我们只需要比较后验概率P(w|x)的大小,

    如果则判别为w1,反之则判别为w2。这样我们就能最小化错误率了。

    而后验概率可以用贝叶斯公式计算,因此使用贝叶斯公式对样本进行分类的分类器为最小错误率贝叶斯分类器,它的判别函数为:

    上面即为最小错误率贝叶斯分类器。

    要计算判别函数值(后验概率),就要先知道先验概率和条件概率。

    1)先验概率可以通过计算各类样本在总样本数占的比例来得到,如w1类样本数为5,总样本数为11,那么P(w1)=5/11

    2)条件概率使用高斯分布计算:

    若样本x为d维向量,第i类wi样本的条件概率密度函数服从均值为mi,协方差为Si的多元高斯分布,条件概率函数为:

    3)取对数,最终的判别函数为:

     

    (推导的时候有一项为常数项可以省略)

    推到这里已经知道我们要做什么了,就是算样本的平均值,协方差,以及先验概率

    4)算出样本x的每类Gi(x)值后,取最大的Gi(x)值对应的i,即样本x属于wi类

    3、matlab实现

    这里使用了教材《模式识别与人工智能(基于matlab)》的一段代码

    clear;
    clc;
    %% 加载样本dataset,包含训练数据和测试数据,数据shape为[样本数,特征维数] %%
    load('dataset.mat');
    train_data = [A_train;B_train;C_train;D_train];
    test_data = [A_test;B_test;C_test;D_test];
    N1_train = size(A_train, 1); N2_train = size(B_train, 1); N3_train = size(C_train, 1); N4_train = size(D_train, 1); % 各个类别的训练样本数
    N_train = N1_train + N2_train + N3_train + N4_train; % 训练样本总数
    N1_test = size(A_test, 1); N2_test = size(B_test, 1); N3_test = size(C_test, 1); N4_test = size(D_test, 1); % 各个类别的测试样本的数量
    N_test = N1_test + N2_test + N3_test + N4_test; % 测试样本总数
    w = 4; % 类别数
    n = 3; % 特征数
    
    %% 初始样本数据计算 %%
    % 求样本均值
    X1 = mean(A_train)'; X2 = mean(B_train)'; X3 = mean(C_train)'; X4 = mean(D_train)';
    % 求样本协方差矩阵
    S1 = cov(A_train); S2 = cov(B_train); S3 = cov(C_train); S4 = cov(D_train); 
    % 求协方差矩阵的逆矩阵
    S1_ = inv(S1); S2_ = inv(S2); S3_ = inv(S3); S4_ = inv(S4); 
    % 求协方差矩阵的行列式
    S11 = det(S1); S22 = det(S2); S33 = det(S3); S44 = det(S4); 
    % 先验概率
    Pw1 = N1_train/N_train; Pw2 = N2_train/N_train; Pw3 = N3_train/N_train; Pw4 = N4_train/N_train; 
    
    %% 计算测试样本的后验概率 %%
    for k = 1 : N_test
        P1 = -1/2*(test_data(k,:)'-X1)'*S1_*(test_data(k,:)'-X1)-1/2*log(S11)+log(Pw1);
        P2 = -1/2*(test_data(k,:)'-X2)'*S2_*(test_data(k,:)'-X2)-1/2*log(S22)+log(Pw2);
        P3 = -1/2*(test_data(k,:)'-X3)'*S3_*(test_data(k,:)'-X3)-1/2*log(S33)+log(Pw3);
        P4 = -1/2*(test_data(k,:)'-X4)'*S4_*(test_data(k,:)'-X4)-1/2*log(S44)+log(Pw4);
        P = [P1 P2 P3 P4];
        Pmax = max(P); % 取后验概率最大的那一类
        if Pmax == P1
            w = 1;
            plot3(test_data(k,1), test_data(k,2), test_data(k,3),'ro');
            grid on;hold on;
        elseif Pmax == P2
            w = 2;
            plot3(test_data(k,1), test_data(k,2), test_data(k,3),'b>');
            grid on;hold on;
        elseif Pmax == P3
            w = 3;
            plot3(test_data(k,1), test_data(k,2), test_data(k,3),'g+');
            grid on;hold on;
        elseif Pmax == P4
            w = 4;
            plot3(test_data(k,1), test_data(k,2), test_data(k,3),'y*');
            grid on;hold on;
        else
            return
        end
    end
        
    

    运行结果:

    分类的结果还是比较好的

     

    欢迎继续学习下一篇【最小风险贝叶斯分类和matlab实现】

    展开全文
  • 如何减少换页错误

    千次阅读 2013-09-07 01:21:39
    如何减少换页错误? 1,进程倾向于占用CPU 2,访问局部性(localilty of reference)满足进程要求 3,进程倾向于占用I/O 4,使用基于最短剩余时间(shortest remaining time)的调度机制 5,减少页大小   ...

    原文链接:http://blog.csdn.net/boluo1982107/article/details/4235903

    有这么一道笔试题:

    如何减少换页错误?

    1,进程倾向于占用CPU

    2,访问局部性(localilty of reference)满足进程要求

    3,进程倾向于占用I/O

    4,使用基于最短剩余时间(shortest remaining time)的调度机制

    5,减少页大小

     

    yathing最先排出1和3选项,访问快慢、访问接口,对“错误”能够有什么影响?肯定是需要某种策略。

    仔细看题:“减少”,而不是“消除”,说明这个“错误”不管怎么样,肯定是存在的;关键在于你是否理解“换页错误”的定义了。

    看看选项2和4都有点像;至于5嘛,不太像了——即使页面减少,错误率会降低吗?难说,你可不知道系统实际运行时,数据大小、分布是什么样的:页面大,更可能将大数据块放在一页上;页面小,则会分散数据——形象上是这么理解,但操作系统算法没这么麻烦,也没见过这方面的概率讨论,排除。

    我猜想的答案是2,因为被“错误”2字误导了:既然要减少错误嘛,“局部化”是很常用的策略,错误发生在局部就不至于影响全局......(归根结底还是不明白“换页错误”的定义)其实如果仔细想想,“局部化”可以降低错误的影响,但是它并不能降低错误的发生概率!剩下的答案就显而易见了。

     

    Google一下这道题,没找到标准答案;百度一下,在百度百科中,找到了“换页错误”的解释。(不错,百度这次搜索表现良好)

     

    换页错误:

    Page Fault 是在进程尝试执行代码指导,或者引用进程所映射物理内存中并不存在的数据页时,操作系统记录的事件。换句话说,进程需要的内存页实际上可能还处于物理内存中,但是由于它无法再分配到进程中,所以当进程将此页读取回到它的内存页时,就发生了Page Fault。

    说白了就是想在内存里找东西,却发现不存在(不得不重新读取...),按道理这不应该算“错误”这么严重吧(简单点,“不命中”而已)。

    采用最短剩余时间调度机制:

    SRT算法(SPN算法的抢占式版本):总是选择剩余时间最短的进程运行

    为什么会减少换页错误呢?因为时间短的结束运行快,不需要频繁切换进程(导致刷新内存),所以换页错误发生的概率就减少了......(yathing:弄明白以后,想象一下就行了,别被名词搞晕了!)

    原文链接:http://blog.csdn.net/boluo1982107/article/details/4235903

    展开全文
  • 同样的,在神经网络训练当中,当神经网络的输出与标签不一样时,也就是神经网络预测错了,这时我们希望神经网络可以很快地从错误当中学习,然后避免再预测错了。那么现实中,神经网络真的会很快地纠正错误吗? 我们...
  • 简述多元正态分布下的最小错误率贝叶斯如果特征的值向量服从d元正态分布,即其概率密度函数为: 即其分布可以由均值向量和对称的协方差矩阵 唯一确定。如果认为样本的特征向量在类内服从多元正态分布: 即...
  • adaboost之所以每次训练后,将分类器错误的权值加大,是因为如果加大后,下一次计算的错误率就会加大,这样,在我们最后一步分类器的整合的时候,它整合原理就是加大误差率小的权重,减少误差率大的权重,这样误差率...
  • 如何减少换页错误

    千次阅读 2016-07-15 20:09:48
    如何减少换页错误? 正确答案: B 你的答案: B (正确) 进程倾向于占用CPU 访问局部性(locality of reference)满足进程要求 进程倾向于占用I/O 使用基于最短剩余时间(shortest ...
  • 个人认为应该是选二,局部性是指: 1、程序顺序执行 2、程序跳转不会太远 ...局部性好,导致下一个要找的东西就在当前内存的前后不远处,很有可能就在同一页里,所以就不需要频繁换页,换页错误也就少了。
  • 搜索“如何减少换页错误

    千次阅读 2009-06-02 14:28:00
    有这么一道笔试题:如何减少换页错误?1,进程倾向于占用CPU2,访问局部性(localilty of reference)满足进程要求3,进程倾向于占用I/O4,使用基于最短剩余时间(shortest remaining time)的调度机制5,减少页大小...
  • 很难说某个流程、某个会议、某个报告是不必要的,没有意义的,但是为了减少错误,肆意的增加流程、会议、报告后,这就成为了公司不能承受之重,不仅降低公司运行的效率,甚至影响正常工作的开展。 对于个人而言,...
  • VC++助手源程序及破解

    2009-09-16 13:56:31
    vc++编程助手,自动分析变量和语法,减少错误率。vc++编程助手,自动分析变量和语法,减少错误率,vc++编程助手,自动分析变量和语法,减少错误率
  • if(t1|t2|t3==0){ // 合并条件,提高分支预测成功 // do something } case 2 if(int i=0; i; ++i){ // for cpu 密集调用 if(cond) // 分支预测 do(); else do2(); } ============...
  • 如何减少C++编写程序的CPU使用

    千次阅读 2015-03-03 14:55:44
    因此每一份函数拷贝仅仅在自己的编译单元中可见,这样链接错误就解决了,但是在程序中却会留下多份函数拷贝。在这种情况下,程序的性能不但没有提升,反而增加了编译和链接时间以及最终可执行体的大小。  但是...
  • Mysql错误编码和解释表

    万次阅读 2017-09-19 20:58:54
    Mysql错误编码和解释表1.错误消息的组成一共由三部分组成 1.mysql数字错误代码,这个数字的mysql的特定值,不可以移植到其它数据库系统。 2.一个五位长度的sqlstate值,这些值取自ANSI SQL和ODBC,并且更加标准化。...
  • 前端构建工具

    千次阅读 2016-09-22 17:19:20
    所以每一个团队都希望有一种工具,能帮助整个团队在开发中能精简流程、提高效率、减少错误率。随之讨论自动化部署也越来越多,并且国内很多大型团队也都有自己成熟的自动化部署工具。据我所知,百度有FIS,腾讯有...
  • 如何减少缺页异常

    千次阅读 2014-09-07 15:09:42
    如何减少换页错误?() 1. 进程倾向于占用CPU 2. 访问局部性(localilty of reference)满足进程要求 3. 进程倾向于占用I/O 4. 使用基于最短剩余时间(shortest remaining time)的调度机制 5. 减少页大小 ...
  • grunt安装及使用

    千次阅读 2016-06-14 18:30:51
    Grunt是一个基于JavaScript上的一个很强大的任务管理器(task runner),简单来说就是你可以在你的终端机上,用JavaScript去执行一些程序来完成一些任务。...他可以更好的帮助一个团队更好的提高效率、减少错误率
  • 查准与查全

    万次阅读 多人点赞 2018-07-16 16:27:58
    我们在平时常用到的模型评估指标是精度(accuracy)和错误率(error rate),错误率是:分类错误的样本数站样本总数的比例,即E=n/m(如果在m个样本中有n个样本分类错误),那么1-a/m就是精度。除此之外,还会有查准...
  • KeilC开发过程中的错误集锦,减少错误的重复度和错误的发生,提高开发效率!
  • 1. beyond compare 超级好用文件的比较工具,虽然我...这个对我的工作效率提高和减少错误率有着非常大的帮助。 2.jd-gui.exe JAVA反编译文件,当你不知道一个class文件发生了什么改动时,使用它反编译吧,可以让
  • 在模式分类问题中,人们往往希望尽量减少分类的错误,从这样的要求出发,利用概率论中的贝叶斯公式,就能得出使错误率为最小的分类规则,称之为基于最小错误率的贝叶斯决策。 设有M类模式,分类规则为 若则。 上式...
  • 机器学习--学习

    千次阅读 2017-04-14 09:20:03
    本文从梯度学习算法的角度中看学习对于学习算法性能的影响,以及介绍如何调整学习的一般经验和技巧。 在机器学习中,监督式学习(Supervised Learning)通过定义一个模型,并根据训练集上的数据估计最优参数...
  • 程序员如何减少代码的BUG量

    千次阅读 2016-09-23 14:33:47
    为什么要减少BUG量
  • 减少PNG图片大小

    千次阅读 2016-06-06 22:11:17
    把真彩图转成索引图,你就得把每一个特殊的颜色都替换成调色板里的颜色,这样做能把占32位的一个像素减少到8位,这一步就减少了很多空间。 这个模式还会在过滤和压缩阶段带来进一步的节省: 由于特殊颜色...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 212,478
精华内容 84,991
关键字:

减少错误率