精华内容
下载资源
问答
  • 分类器比较
    万次阅读 多人点赞
    2016-11-08 21:29:07

    传统的机器学习的监督学习分类分类和回归,分类是争对离散的数据,而回归是争对连续的数据,在数据预处理好的基础上要对数据进行预测,通常采用CV交叉验证来进行模型评价和选择。这篇文章通过连续的数据结合sklearn库对各种回归器做一比较:

    1.linear regression

    缺点:顾名思义,linear regression是假设数据服从线性分布的,这一假设前提也限制了该模型的准确率,因为现实中由于噪声等的存在很少有数据是严格服从线性的。

    优点:基于这种假设,linear regression可以通过normal equation求闭合解的方式求得y_predict

    2.logistic regression

    缺点:从线性回归衍生而来,将线性的值域通过sigmoid函数压缩在(0,1)范围内,缺点同linear regression,且也是要求数据是无缺失的

    优点:有两种方式求解,精确的解析解和SGD算法估计,在要求准确性时使用解析解,在要求时间效率时使用SGD 迭代

    3.SVM(支持向量机 )

    缺点:计算代价比较大,SVM是将低维无序杂乱的数据通过核函数(RBF,poly,linear,sigmoid)映射到高维空间,通过超平面将其分开

    优点:SVM是通过支撑面做分类的,也就是说不需要计算所有的样本,高维数据中只需去少量的样本,节省了内存

    在sklearn默认配置中三种核函数的准确率大概是:RBF>poly>linear

    4.Naive Bayes

    缺点:这一模型适合用在文本样本上,采用了朴素贝叶斯原理假设样本间是相互独立的,因此在关联比较强的样本上效果很差

    优点:也是基于其独立的假设,概率计算大大简化,节省内存和时间

    5.K近邻

    缺点:k需要人为设定,且该算法的复杂度很高

    优点:“近朱者赤,近墨者黑”KNN是无参数训练的模型

    6.决策树(DT)

    缺点:在训练数据上比较耗时

    优点:对数据要求度最低的模型,数据可以缺失,可以是非线性的,可以是不同的类型,,最接近人类逻辑思维的模型,可解释性好

    7.集成模型(众志成城模型)

    random forest:随机抽取样本形成多个分类器,通过vote,少数服从多数的方式决定最终属于多数的分类器结果,分类器之间是相互去之间关联的

    gradient boost:弱弱变强,最典型的代表是adaboost(三个臭皮匠,顶个诸葛亮),弱分类器按照一定的计算方式组合形成强的分类器,分类器之间存在关联,最终分类是多个分类器组合的结果

    一般地,GB>RF>DT

    但是集成模型缺点在于受概率的影响,具有不确定性


    以上是常用的回归分类器的比较,在知道各种分类器的优缺点之后就可以使用正确的分类器完成自己的数据处理,如下表是通过计算各类分类器的残差来对比同一任务不同分类器之间的好坏,可以看出来在sklearn默认参数的前提下,准确率排序是:集成模型>DT>SVM>KNN>Linear

    分类回归器导入python库命令导入函数命令残差(%)
    linear regressionfrom sklearn.linear_model import LinearRegressorlr = LinearRegressor()5.223
    SGD regression penalty L2from sklearn.linear_model import SGDRegressorSGDR = SGDRegressor("penalty = l2")5.780
    SGD regression penalty L1SGDR = SGDRegressor("penalty = l1")5.765
    SVR(rbf kernel)from sklearn .svm import SVR
    (Penalty parameter :C,Kernel coefficient :gamma)
    SVR = SVR(kernel="rbf")0.627
    SVR(sigmoid kernel)SVR = SVR(kernel="sigmoid ")82.507
    SVR(poly kernel)SVR = SVR(kernel="poly")20.862
    SVR(linear kernel)SVR = SVR(kernel="linear")6.451
    KNN(n=5,weights=uniform)from sklearn.neighbors import KNeighborsRegressorknn = KNeighborsRegressor(n=5,weights="uniform")0.731
    KNN(n=5,weights=distance)knn = KNeighborsRegressor(n=5,weights="distance")1.087
    DTfrom sklearn.tree import DecisionTreeRegressorDT = DecisionTreeRegressor()0.447
    Random forestfrom sklearn.ensemble import RandomForestRegressorRF = RandomForestRegressor()0.270
    Extra Treesfrom sklearn.ensemble import ExtraTreesRegressorET = ExtraTreesRegressor()0.246
    Gradient Boostingfrom sklearn.ensemble import GradientBoostingRegressorGB = GradientBoostingRegressor()0.284

    更多相关内容
  • SVM和Softmax分类器比较

    千次阅读 2019-06-02 17:16:52
    ####参考: 作者:啊噗不是阿婆主 来源:CSDN ...1. SVM和Softmax分类器是最常用的两个分类器,Softmax...对于学习过二元逻辑回归分类器的读者来说,Softmax分类器就可以理解为逻辑回归分类器面对多个分类的一般化归纳...

    参考:

    作者:啊噗不是阿婆主
    来源:CSDN
    原文:https://blog.csdn.net/weixin_38278334/article/details/83002748

    1.

    SVM和Softmax分类器是最常用的两个分类器,Softmax的损失函数与SVM的损失函数不同。对于学习过二元逻辑回归分类器的读者来说,Softmax分类器就可以理解为逻辑回归分类器面对多个分类的一般化归纳。

    SVM将输出 f ( x i , W ) f(x_i,W) f(xi,W)作为每个分类的评分(因为无定标,所以难以直接解释)。与SVM不同,Softmax的输出(归一化的分类概率)更加直观,并且从概率上可以解释,这一点后文会讨论。

    在Softmax分类器中,函数映射 f ( x i ; W ) = W x i f(x_i;W)=Wx_i f(xi;W)=Wxi 保持不变,但将这些评分值视为每个分类的未归一化的对数概率,并且将折叶损失(hinge loss)替换为交叉熵损失(cross-entropy loss)。

    2.

    精确地说,SVM分类器使用的是折叶损失(hinge loss),有时候又被称为最大边界损失(max-margin loss)。

    Softmax分类器使用的是交叉熵损失(corss-entropy loss)。

    Softmax分类器的命名是从softmax函数那里得来的,softmax函数将原始分类评分变成正的归一化数值,所有数值和为1,这样处理后交叉熵损失才能应用。

    注意,从技术上说“softmax损失(softmax loss)”是没有意义的,因为softmax只是一个压缩数值i的函数y。但是在这个说法常常被用来做简称。

    example 1

    针对给出的图像,SVM分类器可能给你的是一个 [ 12.5 , 0.6 , − 23.0 ] [12.5, 0.6, -23.0] [12.5,0.6,23.0],对应分类“猫”,“狗”,“船”;

    而softmax分类器可以计算出这三个标签的”可能性“是 [ 0.9 , 0.09 , 0.01 ] [0.9, 0.09, 0.01] [0.9,0.09,0.01],这就让你能看出对于不同分类准确性的把握。

    为什么我们要在”可能性“上面打引号呢?这是因为可能性分布的集中或离散程度是由正则化参数 λ λ λ直接决定的, λ λ λ是你能直接控制的一个输入参数。

    example 2

    假设3个分类的原始分数是 [ 1 , − 2 , 0 ] [1, -2, 0] [1,2,0],那么softmax函数就会计算:

    [ 1 , − 2 , 0 ] → [ e 1 , e − 2 , e 0 ] = [ 2.71 , 0.14 , 1 ] → [ 0.7 , 0.04 , 0.26 ] [1,-2,0]\rightarrow[e^1,e^{-2},e^0]=[2.71,0.14,1]\rightarrow[0.7,0.04,0.26] [1,2,0][e1,e2,e0]=[2.71,0.14,1][0.7,0.04,0.26]

    现在,如果正则化参数 λ λ λ更大,那么权重 W W W就会被惩罚的更多,然后他的权重数值就会更小。这样算出来的分数也会更小,假设小了一半吧 [ 0.5 , − 1 , 0 ] [0.5, -1, 0] [0.5,1,0],那么softmax函数的计算就是:

    [ 0.5 , − 1 , 0 ] → [ e 0.5 , e − 1 , e 0 ] = [ 1.65 , 0.73 , 1 ] → [ 0.55 , 0.12 , 0.33 ] [0.5,-1,0]\rightarrow[e^{0.5},e^{-1},e^0]=[1.65,0.73,1]\rightarrow[0.55,0.12,0.33] [0.5,1,0][e0.5,e1,e0]=[1.65,0.73,1][0.55,0.12,0.33]

    现在看起来,概率的分布就更加分散了。还有,随着正则化参数 λ λ λ不断增强,权重数值会越来越小,最后输出的概率会接近于均匀分布。这就是说,softmax分类器算出来的概率最好是看成一种对于分类正确性的自信。和SVM一样,数字间相互比较得出的大小顺序是可以解释的,但其绝对值则难以直观解释。

    在实际应用中

    SVM和Softmax经常是相似的:通常说来,两种分类器的表现差别很小,不同的人对于哪个分类器更好有不同的看法。

    相对于Softmax分类器,SVM更加“局部目标化(local objective)”,这既可以看做是一个特性,也可以看做是一个劣势。

    考虑一个评分是 [ 10 , − 2 , 3 ] [10, -2, 3] [10,2,3]的数据,其中第一个分类是正确的。那么一个SVM( Δ = 1 \Delta =1 Δ=1)会看到正确分类相较于不正确分类,已经得到了比边界值还要高的分数,它就会认为损失值是 0 0 0。SVM对于数字个体的细节是不关心的:如果分数是 [ 10 , − 100 , − 100 ] [10, -100, -100] [10,100,100]或者 [ 10 , 9 , 9 ] [10, 9, 9] [10,9,9],对于SVM来说没设么不同,只要满足超过边界值等于 1 1 1,那么损失值就等于 0 0 0

    对于softmax分类器,情况则不同。对于 [ 10 , 9 , 9 ] [10, 9, 9] [10,9,9]来说,计算出的损失值就远远高于 [ 10 , − 100 , − 100 ] [10, -100, -100] [10,100,100]的。换句话来说,softmax分类器对于分数是永远不会满意的:正确分类总能得到更高的可能性,错误分类总能得到更低的可能性,损失值总是能够更小。但是,SVM只要边界值被满足了就满意了,不会超过限制去细微地操作具体分数。这可以被看做是SVM的一种特性。
    举例说来,一个汽车的分类器应该把他的大量精力放在如何分辨小轿车和大卡车上,而不应该纠结于如何与青蛙进行区分,因为区分青蛙得到的评分已经足够低了。

    3. Hinge Loss

    Hinge Loss 主要针对要求”maximum-margin”的分类问题,因此尤其适用于SVM分类。

    Hinge Loss的定义如下:

    l ( y ) = m a x ( 0 , 1 − t ⋅ y ) l(y)=max(0,1−t⋅y) l(y)=max(0,1ty)

    其中, t = ± 1 t=±1 t=±1, 需要注意的是 y y y并不是分类的 l a b e l label label,而只是决策函数的输出。

    例如在线性SVM中, y = w x + b y=wx+b y=wx+b, x x x 是待分类点, w w w b b b 构成分类超平面。

    从定义可以很容易看出,当 t t t y y y符号一致(表示 y y y分类正确) 且 ∥ y ∥ ≥ 1 ‖ ∥y∥≥1‖ y1 H i n g e L o s s ( y ) = 0 ; Hinge \quad Loss\quad (y)=0; HingeLoss(y)=0; 当符号不一致时, l ( y ) = 0 l(y)=0 l(y)=0,随 y y y线性增加。

    3.softmax

    展开全文
  • 机器学习常用的分类器比较-实例

    万次阅读 2016-11-10 22:36:26
    这篇学习文章是在上一篇博客(http://blog.csdn.net/july_sun/article/details/53088673)的基础上,从机器学习的四要素(数据,算法和模型,计算机硬件,机器学习平台)角度出发用实例将各个分类器做一比较.

    这篇学习文章是在上一篇博客(http://blog.csdn.net/july_sun/article/details/53088673)的基础上,从机器学习的四要素(数据,算法和模型,计算机硬件,机器学习平台)角度出发用实例将各个分类器做一比较,下面就开始这段代码的奇妙旅程吧~~

    第一:计算机硬件

    本例中只要普通的64位 win系统即可,使用的python是W64的Anaconda,这个python平台的好处是已安装好经常使用的ML包,如sklearn和数据处理包,如numpy和scipy.

    第二:机器学习平台

    首先,本例中用到了数据处理包numpy对数据进行预处理,当然也可以直接使用scipy包,如果调用scipy就可以直接使用numpy,因为scipy是基于numpy的.

    其次,在机器学习模型训练和参数选择时使用万能的sklearn库,里面包含了机器学习的最广泛使用的算法

    第三:数据

    step1:数据收集

    网上有大量的免费数据和文本可以拿来使用,也可以自己简单生成或者是用sklearn的datasets的数据集,亦或是sklearn的make_regression来生成纯数据以及带有噪声的数据,本例中使用的是中国气象数据网2015年的上海的气象数据来让计算机学习上海这一年中的气温和一些因素的关系,即监督学习,其中Y是气温.

    代码如下:

    import numpy as np
    
    W = ['C:\\Users\\123\\Desktop\\weather\\2015.txt',]
    
    weather = np. loadtxt ( W [0] , skiprows =1)
    
    weather[: ,7 ] = weather[: ,7 ] / 10plt . figure ()
    plt . axis ([0 , 370 , -5, 40])
    plt . ylabel (" Temperatures"  )
    plt . xlabel (" Month"  )
    plt . xticks ([30 , 58, 89, 119 , 150 , 180 ,211 , 242 , 272 , 303 , 333 , 364],
                  ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] )
    
    plt . title (' Temperatures trent chart of Shanghai in year 2015 ')
    
    plt . plot ( np.arange(len(weather)),weather[: , 7 ],label=2015,marker='*',linestyle='-',color="black")
    plt . legend()
    plt . show()

    可视化如下:

    step2:数据清洗

    首先要看一下数据是否是完整的,如果不完整(可能缺失或者不对齐等)就需要清洗数据,这一步对后续模型的选择以及结果很重要,因为这篇文章重点在机器学习分类器的比较,所以选择了数据比较完整的气象数据~~

    第四:算法和模型

    step1:特征工程(feature selection)

    Y是气温,X是6个与气温相关的参量,为了预测准确,要排除X之间的相关性,找到独立的与Y 相关的X,用到了相关系数来对比

    代码如下:

    np. random . shuffle ( weather )
    z = (weather [:, 7], weather [: ,5] , weather [: ,10],
          weather [: ,11] , weather [: ,13] ,weather [: ,16] , weather [: ,21])
    z = np. transpose (z)
    cor = np. corrcoef (z, rowvar =0)
    np.savetxt("C:\\Users\\123\\Desktop\\weather\\mydata.csv",cor,delimiter=",")

    由相关系数找到和气温最相关的四个变量作为输入x

    step2:CV交叉验证来看一下不同分类器会不会overfitting,以Random Forest分类器为例

    代码如下:

    from sklearn.ensemble import RandomForestRegressor
    from sklearn.learning_curve import validation_curve
    
    np. random . shuffle ( weather )
    y = weatherall [:, 7]
    x = np. vstack ((weatherall [:, 10], weatherall [:, 11],weatherall [:, 14], weatherall [:, 21])) 
    x = np. transpose (x)
    x = preprocessing . scale (x)
    RF = RandomForestRegressor()
    train_loss,test_loss = validation_curve(RF,x,y,,cv=10,scoring='mean_squared_error'.train_sizes=[0.1,0.25,0.5,0.75,1])
    train_loss_mean = -np.mean(train_loss,axis=1)
    test_loss_mean = -np.mean(test_loss,axis=1)
    
    plt.figure()
    plt.plot(param_range,train_loss_mean,'o-',c='r',label='Training')
    plt.plot(param_range,test_loss_mean,'o-',c='b',label='Cross_validation')
    plt.xlabel('Training exapmles')
    plt.ylabel('Loss')
    plt.legend(loc='best')
    plt.title("10 CV on Random Forest ")
    plt.show()

    可视化如下:

    从可视化结果看,training过程中训练集合验证集的loss一直下降,说明能计算机能一直很好的学到知识,不会有overfitting的问题,换用其他几个模型(lr/DT/SVM/KNN/SGD/GB)也是同样的效果,这可能和数据有直接的关系.

    step3:各个分类器的比较(残差,错误率),以GradientBoost为例,其他的LInear Regression,SGD,KNN,SVM,DT和集成算法RF,ET都是类似的方法

    代码如下:

    gb = GradientBoostingRegressor()
    y_gb = gb . fit ( x_train , y_train).predict ( x_test )
    print "Residual sum of Gradient Boosting Regression squares is", np. mean(( y_gb - y_test ) ** 2)
    得到各个分类器的结果如下:

    从error看出,在Sklearn默认参数的前提下,集成算法的错误率是最低的.

    将Gradient Boost的训练集,测试集和预测集可视化:可以看出来预测结和之前可视化的2015年的气温跟分布趋势还是比较吻合的.



    以上就是机器学习的基本的流程以及模型选择以及结果预测,总结如下:

    1.data和feature比算法和模型重要,data和feature已经决定了误差上界,模型和算法只是逼近这一上界的手段

    2.sklearn的各种算法的调参对错误率结果也会产生影响,在默认参数的情况下,准确率的的排列顺序是集成算法>SVM>DT>其他,但是也可以通过优化参数来提高各分类器的准确率

    3.在机器学习过程中,overfitting是一定要注意的,通过cv_可以看出来分类器过拟合的情况

    4.总体而言,集成分类器比单个的机器学习分类器的效果要好,这是集成学习将多个个体分类器联合起来预测结果,分而治之,弱弱变强的思想.

    5.在实际应用中要视具体问题以及自己的硬件等条件以及期望达到的精度来选择,毕竟每一种分类器都不是万能的,都有其优缺点(博客http://blog.csdn.net/july_sun/article/details/53088673已提过),适合自己的才是最好的


    展开全文
  • 车辆检测分类器文件

    千次下载 热门讨论 2014-06-26 10:12:28
    博文:http://blog.csdn.net/zhuangxiaobin/article/details/25476833 这篇文章里所提供的工具和样本训练出来的分类器xml文件,可以使用文中的代码实践一下
  • 贝叶斯分类器

    万次阅读 多人点赞 2018-07-27 22:22:41
    贝叶斯分类器是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类器。而朴素贝叶斯分类器是贝叶斯分类器中最简单,也是最常见的一种分类方法。并且,朴素贝叶斯算法仍然是流行的十大挖掘算法之...

                                                                       "微信公众号" 

    本文同步更新在我的微信公众号里,地址:https://mp.weixin.qq.com/s/jfQNQ0mMe7a-k3IQNL_YAg

    本文同步更新在我的知乎专栏里,地址:https://zhuanlan.zhihu.com/p/40485461

    1. 摘要

    贝叶斯分类器是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类器。而朴素贝叶斯分类器是贝叶斯分类器中最简单,也是最常见的一种分类方法。并且,朴素贝叶斯算法仍然是流行的十大挖掘算法之一,该算法是有监督的学习算法,解决的是分类问题。该算法的优点在于简单易懂、学习效率高、在某些领域的分类问题中能够与决策树、神经网络相媲美。但由于该算法以自变量之间的独立(条件特征独立)性和连续变量的正态性假设为前提,就会导致算法精度在某种程度上受影响。

    2. 贝叶斯分类器的基础

    要想学习贝叶斯算法的要领,我们需要先了解先验概率后验概率的概念。

    先验概率:是指根据以往经验和分析得到的概率。

    举个例子:如果我们对西瓜的色泽、根蒂和纹理等特征一无所知,按照常理来说,西瓜是好瓜的概率是60%。那么这个概率P(好瓜)就被称为先验概率。

    后验概率:事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小。

    举个例子:假如我们了解到判断西瓜是否好瓜的一个指标是纹理。一般来说,纹理清晰的西瓜是好瓜的概率大一些,大概是75%。如果把纹理清晰当作一种结果,然后去推测好瓜的概率,那么这个概率P(好瓜|纹理清晰)就被称为后验概率。后验概率类似于条件概率。

    联合概率:设二维离散型随机变量(X,Y)所有可能取得值为,记则称 为随机变量X和Y的联合概率。计算如下:

    举个例子:在买西瓜的案例中,P(好瓜,纹理清晰)称为联合分布,它表示纹理清晰且是好瓜的概率。关于它的联合概率,满足以下乘法等式:

    其中,P(好瓜|纹理清晰)就是后验概率,表示在“纹理清晰”的条件下,是“好瓜”的概率。P(纹理清晰|好瓜)表示在“好瓜”的情况下,是“纹理清晰”的概率。

    全概率:如果事件组满足:

    全概率公式的意义在于:当直接计算P(A)较为困难时,而 

    的计算较为简单时,可以利用全概率公式进行计算P(A)。

    举个例子:上面联合概率概念买西瓜的例子中,我们要计算P(好瓜,纹理清晰)联合概率时,需要知道P(纹理清晰)的概率。那么,如何计算纹理清晰的概率呢?实际上可以分为两种情况:一种是好瓜状态下纹理清晰的概率,另一类是坏瓜状态下纹理清晰的概率。纹理清晰的概率就是这两种情况之和。因此,我们可以推导出全概率公式:

    贝叶斯定理:贝叶斯公式是建立在条件概率的基础上寻找事件发生的原因(即大事件A已经发生的条件下,分割中的小事件的概率),设 是样本空间Ω的一个划分,则对任一事件A(P(A)>0),有贝叶斯定理:

    对于每个特征x,我们想要知道样本在这个特性x下属于哪个类别,即求后验概率P(c|x)最大的类标记。这样基于贝叶斯公式,可以得到:

    好了,学习完上面的先验概率后验概率联合概率全概率贝叶斯定理后,我们来小试牛刀一下:

    西瓜的状态分为两种:好瓜与坏瓜,概率分别为0.6和0.4,并且好瓜里面纹理清晰的概率是0.8,坏瓜里面纹理清晰的概率是0.4。那么,我现在挑了一个纹理清晰的瓜,该瓜是好瓜的概率是多少?

    很明显,这是一个后验概率问题,我们可以直接给出公式:

    对公式里面出现的概率一个一个分析:

    后验概率:P(纹理清晰|好瓜)=0.8

    先验概率:P(好瓜)=0.6

    后验概率:P(纹理清晰|坏瓜)=0.4

    先验概率:P(坏瓜)=0.4

    由上面分析的数值,我们可以直接求解上式:

    这样,我们就计算得到了纹理清晰的情况下好瓜的概率是0.75。上面计算后验概率P(好瓜|纹理清晰)的公式就是利用了贝叶斯定理。

    3. 朴素贝叶斯分类器

    不难发现,基于贝叶斯公式(公式1)来估计后验概率P(c|x)的主要困难在于:类条件概率P(x|c)是所以属性上的联合概率(即x代表的是多个属性),难以从有限的训练样本直接估计而得。为了避开这个障碍,朴素贝叶斯分类器(naive Bayes classifier)采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。换言之,假设每个属性独立地对分类结果发生影响。

    朴素贝叶斯的算法步骤:

    1. 设某样本属性集合其中 n 为属性数目,为x在第i属性上的取值。

    2. 把这个样本划分为类别集合c中的某一类,

    3.  计算后验概率:

    其中,,体现了朴素贝叶斯的精髓:每个特征相互独立。

    那么,如何计算出 呢?首先找到一个已知类别分类集合,在这个集合中统计特征属性在各个类别下的条件概率,即得到我们要计算的

    值得注意的是:上式中的分母部分,对于所有的类别来说都是一样的。因此可以省略,针对不同的 ,仅需要比较的分子部分。

    4. 如果 ,则样本在属性集 x下属于

     温馨提示:如果对上面的算法步骤有点困惑,可以先看下面的例子,然后再回过头来理解朴素贝叶斯的算法步骤,理解效果会更好一点。

    4. 朴素贝叶斯分类实例

    我们已经了解了贝叶斯定理和朴素贝叶斯算法,可能你对上面的朴素贝叶斯算法还很困惑。这一小节,我们用一个实例来熟悉朴素贝叶斯算法。

    我们还以买西瓜为实例。现在,我们有包含10个样本的数据集,这组数据集是以纹理、色泽、敲声为特征判断是好瓜还是坏瓜。数据集如下:

    其中,纹理分为:清晰和模糊,色泽分为:青绿和乌黑,敲声分为:浊响、沉闷和清脆。不同的特征值组合对应着两类:好瓜还是坏瓜。

    现在,我从超市中挑选了一个西瓜,它的纹理清晰、色泽青绿、敲声沉闷。我们可以根据样本数据集和朴素贝叶斯算法来计算该西瓜是好瓜还是坏瓜。

    (1)首先,计算好瓜的情况:

    先验概率:P(好瓜)=6/10=0.6

    条件概率:P(纹理清晰|好瓜)=4/6=2/3

    条件概率:P(色泽青绿|好瓜)=4/6=2/3

    条件概率:P(敲声沉闷|好瓜)=2/6=1/3

    计算后验概率P(好瓜|纹理清晰、色泽青绿、敲声沉闷)分子部分:

    P(好瓜)x P(纹理清晰|好瓜)x P(色泽青绿|好瓜)x P(敲声沉闷|好瓜)= 0.6 × (2 / 3) × (2 / 3) × (1 / 3) = 4 / 45。

    (2)然后,计算坏瓜的情况:

    先验概率:P(坏瓜)=4/10=0.4

    条件概率: P(纹理清晰|坏瓜) =1/4=0.25

    条件概率: P(色泽青绿|坏瓜) =1/4=0.25

    条件概率: P(敲声沉闷|坏瓜) =1/4 =0.25

    计算后验概率P(坏瓜|纹理清晰、色泽青绿、敲声沉闷)分子部分:

    P(坏瓜) × P(纹理清晰|坏瓜) × P(色泽青绿|坏瓜) × P(敲声沉闷|坏瓜) = 0.4 × 0.25 × 0.25 × 0.25 = 1 / 160。

    (3)比较好瓜、坏瓜类别中的后验概率:

    P(好瓜|纹理清晰、色泽青绿、敲声沉闷)> P(坏瓜|纹理清晰、色泽青绿、敲声沉闷),即4/45 > 1/160,所以预测该纹理清晰、色泽青绿、敲声沉闷西瓜为好瓜。

    5. 关于朴素贝叶斯容易忽略的点

    (1)由上文看出,计算各个划分的条件概率 是朴素贝叶斯分类的关键性步骤,当特征属性为离散值时,能很方便的统计训练样本中各个划分在每个类别中出现的频率即可用来估计 ,下面重点讨论特征属性是连续值的情况。

    当特征属性为连续值时,通常假定其值服从高斯分布(也称正态分布)。即:

    则:

    因此只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,代入上述公式即可得到需要的估计值。均值与标准差的计算在此不再赘述。

    (2) 另一个需要讨论的问题就是当怎么办,当某个类别下某个特征项划分没有出现时,就是产生这种现象,这会令分类器质量大大降低。为了解决这个问题,我们引入Laplace校准,它的思想非常简单,就是对每个类别下所有划分的计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,并且解决了上述频率为0的尴尬局面。

    6. 朴素贝叶斯分类器的优缺点

    (1)优点:

    1)简单易懂、学习效率高。

    2)分类过程中时空开销小。

    (2)缺点:

    算法以自变量之间的独立(条件特征独立)性和连续变量的正态性假设为前提,会导致算法精度在某种程度上受影响。

    Reference:

    【1】《机器学习》,周志华著。

    【2】通俗易懂!白话朴素贝叶斯

    【3】Machine Learning -- Naive Bayes(朴素贝叶斯)

    【4】教你明白啥是朴素贝叶斯分类器

    【5】带你理解朴素贝叶斯分类算法

    展开全文
  • 数据分类器构建

    万次阅读 2022-03-05 15:15:53
    要求完成分类器的代码实现 二、内容 KNN分类方法的实现 三、实验步骤 X=standdata; [n,m]=size(X); x=rand(1,m-1); %%x和X每一行向量的距离: for i=1:n %%x和X每一行向量的距离 dis(i)=sqrt((x-X(i,1:m...
  • 一个分类器的分类准确率在60%-80%,即:比随机预测略好,但准确率却不太高,我们可以称之为“弱分类器”,比如CART(classification and regression tree分类与回归树)。 反之,如果分类精度90%以上,则是强分类...
  • 简介 OpenCV下的data\haarcascades中有4个haar特征训练的级联分类器: haarcascade_frontalface_alt.xml haarcascade_frontalface_alt_tree.xml haarcascade_frontalface_alt2.xml haarcascade_front...
  • 贝叶斯分类器原理——学习笔记

    千次阅读 2022-01-25 17:07:48
    贝叶斯分类器原理简介一、逆概率推理与贝叶斯公式1、确定性推理与概率推理2、贝叶斯公式二、贝叶斯分类的原理三、概率估计1、先验概率的估计2、类条件概率的估计四、贝叶斯分类的错误率五、常用贝叶斯分类器1、最小...
  • 分类器

    万次阅读 多人点赞 2018-09-21 21:23:10
    分类器的作用:常规任务是利用给定的类别、已知的训练数据来学习分类规则和分类器,然后对未知数据进行分类(或预测)。逻辑回归(logistics)、SVM等常用于解决二分类问题,对于多分类问题(multi-class ...
  • 贝叶斯分类器详解

    万次阅读 多人点赞 2019-07-07 08:22:20
    本文介绍了贝叶斯的基本知识,然后给出了极大似然估计。最后给出了朴素贝叶斯分类器和半朴素贝叶斯分类器,并给出了西瓜书上相关的例题。
  • 最简单的贝叶斯分类器演示Matlab程序。入门必备。 详细请参考本人的博客http://blog.csdn.net/ranchlai/article/details/10375579
  • 朴素贝叶斯分类器(MATLAB源代码)

    热门讨论 2014-09-30 18:07:20
    朴素贝叶斯分类器 MATLAB 源代码,里面含有使用实例,用的是 UCI 的 mushroom 数据集。 分类器详细介绍见: http://blog.csdn.net/yunduanmuxue/article/details/39693917
  • Haar级联分类器概述

    千次阅读 2022-03-04 16:48:52
    Haar级联分类器概述 —— 才疏学浅, 难免有错误和遗漏, 欢迎补充和勘误. Haar级联分类器是基于Haar-like特征,运用积分图加速计算,并用Adaboost训练的强分类器级联的方法来进行人脸检测。 目前常用Haar-like特征的...
  • 朴素贝叶斯分类器(Matlab代码)

    热门讨论 2014-09-06 17:52:21
    不是matlab 官方版本,自己动手写的并含有测试模块,适合学习贝叶斯编程过程。
  • Softmax分类器

    万次阅读 多人点赞 2020-03-17 17:52:24
    下面我们介绍一下分类器最终的LOSS值是怎么计算的: 第一步:对应于一个输入计算出它属于每种类别的得分数值。 第二部:利用sigmoid函数把所有的得分值映射成一个概率值。 第三部:对最终正确分类所占的概率求一个...
  • 基于OpenCV的Haar与LBP级联分类器

    千次阅读 2022-04-03 11:23:02
    级联分类器原理-AdaBoost ·Viola和Jones – 2001在CVPR提出 ·一种实时对象(人脸)检测框架 ·训练速度非常慢,检测速度非常快 ·5000个正向人脸样本与300万个非人脸负样本数据 弱分类器-Weak classifier = ...
  • 朴素贝叶斯分类器原理解析与python实现

    千次阅读 多人点赞 2020-08-18 15:39:22
    贝叶斯分类器是以贝叶斯原理为基础的分类器的总称,是一种生成式模型,朴素贝叶斯分类器是其中最简单的一种。要高明白贝叶斯分类器的原理,首先得明白一些基本概念。 预备知识 基本概念 先验概率:根据统计/经验...
  • 2、最近邻分类器

    千次阅读 2018-07-06 10:23:41
    2、最近邻分类器 接下来我们来开发一个图像分类器:最近邻分类器。这个分类器在实践中很少用,但是可以让我们对数据驱动的图像分类方法有一个概念性的理解。 图像分类样例数据集:CIFAR-10,这是一个有名的图像...
  • Boosting分类器

    万次阅读 2015-11-16 22:16:54
     最重要的就是如何决定每个结点判断的输出,要比较输入图片的特征值和弱分类器中特征,一定需要一个阈值,当输入图片的特征值大于该阈值时才判定其为人脸。训练最优弱分类器的过程实际上就是在寻找合适的分类器阈值...
  • CNN线性分类器、损失函数

    万次阅读 2018-03-13 14:56:57
    线性分类 由于之前KNN分类器的缺点,让我们很自然地去寻找有更加强大地方法去完成图像分类任务,这种方法主要有两部分组成: 评分函数(score function),它是原始图像数据到类别分值的映射(f(x)=Wx)。...
  • AdaBoost分类器

    千次阅读 2017-09-22 19:28:10
    由于误差率delta是大于0.5小于1的数值,所以当delta增大时,alpha也是增大的,也就是说一个弱分类器的错误率越大,其获得的权重也是越大的,这就意味着在训练的时候,分类器会更加注重这些错误率比较大的弱分类器。...
  • C++使用opencv调用级联分类器来识别目标物体

    千次阅读 多人点赞 2022-04-19 13:25:14
    相较于帧差法捕捉目标物体识别,级联分类器识别目标物体更加具有针对性,使用前者只要是动的物体都会被捕捉识别到,画面里有一点风吹草动,都会被捕捉识别下来,如果我想识别具体的人或者物,都无法做到精准的目标...
  • 贝叶斯分类器理论知识。包括贝叶斯决策论,朴素贝叶斯分类器,半朴素贝叶斯分类器
  • 借助多标签分类器进行对抗训练

    千次阅读 2022-01-21 12:01:04
    目前对抗训练的研究方向主要集中在多分类任务中的训练方式上,本文尝试借助多标签分类器来对多分类器进行对抗训练,其中多分类任务和多标签任务的区别可以从文章《多标签分类器(附pytorch代码)》中知晓。...
  • softmax 分类器

    千次阅读 2018-07-17 21:45:10
    没有时间总结,先记下来。...(1)CS231n课程笔记翻译:线性分类笔记(下) https://zhuanlan.zhihu.com/p/21102293?refer=intelligentunit (2)cs231n-assignment1-SVM/Softmax/two-layer-nets梯度求解 ...
  • 2.3.1 线性分类 现在,我们将开发⼀种功能更强⼤的图像分类⽅法,最终将其⾃然地扩展到整个神经⽹络和卷积神经⽹络。线性分类⽅法。这种⽅法来主要由两部分,⼀个函数将输⼊数据映射到⼀个类别分数,另⼀个就是损失...
  • 线性分类器和非线性分类器总结

    千次阅读 2019-05-24 10:42:42
    在机器学习中会遇到很多的分类器,在这篇博文中总结了常用的分类器线性和非线性的分类。 线性分类器:模型是参数的线性函数,分类平面是(超)平面。 非线性分类器:模型分界面可以是曲面或者是超平面的组合。 ...
  • 最小马氏距离分类器

    千次阅读 2017-04-07 11:35:55
    摘要:本次实验的第一部分是计算三类样本中每一类样本的均值矢量和协方差矩阵(假设...第二部分是编写最小马氏距离分类器、最小欧氏距离分类器和贝叶斯分类器函数,分别对四个测试点进行分类,并对分类结果进行对比分析

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 891,048
精华内容 356,419
关键字:

分类器比较