精华内容
下载资源
问答
  • 数据挖掘 贝叶斯算法 C++ 贝叶斯算法一般都用MATLAB实现,好不容易找到个C++的,可以用到工程中去
  • 分类算法】什么是分类算法

    千次阅读 2019-12-14 11:47:10
    分类算法的本意就是对我们的数据分进行分类。把它们分到已知的每一个类别。就像一个篮子里面有很多橙子和苹果,机器会通过我们训练出来的模型,对篮子里的水果进行分类。比如:红色 = 苹果,橙色 = 橙子。若要让机器...

    定义

    分类算法的本意就是对我们的数据分进行分类。把它们分到已知的每一个类别。就像一个篮子里面有很多橙子和苹果,机器会通过我们训练出来的模型,对篮子里的水果进行分类。比如:红色 = 苹果,橙色 = 橙子。若要让机器直到这种规则,我们就需要一定量的带标签的“红/橙”标签的数据。然后让模型学习,噢,原来是这种分类规则。
    所以分类算法往往需要“带标签”的数据。它是一个监督学习的过程。目标数据都有哪些特征以及这些特征对应什么标签都必须是已知的。然后模型会遍历每一笔数据,最终得到我们我们所认为的规则。所以分类算法往往拥有更精确的计算结果。只是数据的局限性更高,若无法满足的话,我们则需要考虑聚类分析。

    分类与聚类

    这里的对比其实是复制我的另外一篇文章。(【聚类算法】什么是聚类

    对比项分类聚类
    基础将数据分类为众多已定义的确定类之一此函数将数据映射到多个集群中的一个集群,其中数据项的排列依赖于它们之间的相似性。
    类型监督学习非监督学习
    训练集需要不需要

    分类过程

    • 数据准备 - 准备你要分类的数据。这些数据必须要带标签的
    • 数据分类 - 把数据划分成训练集和测试集。这里有很多种划分规则。(后续我就训练集与测试集的划分分享一篇文章,敬请期待)
    • 训练模型 - 把训练集数据传进模型当中,让模型直到我们需要的规则。
    • 测试模型 - 使用测试集测试模型的效果,并调整模型
    • 输出模型 - 把训练好的模型打包并输出

    方法

    分类的方法有很多。但很多都是从线性回归为基础拓展出来的,比如逻辑回归。这里稍微预告一下我会分享的分类算法:

    • 逻辑回归
    • 支持向量机(SVM)
    • KNN
    • 决策树
    • 随机森林
    • Xgboots
    • 贝叶斯
    • 神经网络(这个有难度,希望能分享)
      点我阅读更多算法分享
    展开全文
  • 分类算法-随机森林 (Classification Algorithms - Random Forest) Advertisements 广告 Previous Page 上一页 Next Page 下一页 介绍 (Introduction) Random forest is a supervised learning ...
    随机森林分类算法

    随机森林分类算法

    分类算法-随机森林 (Classification Algorithms - Random Forest)

    介绍 (Introduction)

    Random forest is a supervised learning algorithm which is used for both classification as well as regression. But however, it is mainly used for classification problems. As we know that a forest is made up of trees and more trees means more robust forest. Similarly, random forest algorithm creates decision trees on data samples and then gets the prediction from each of them and finally selects the best solution by means of voting. It is an ensemble method which is better than a single decision tree because it reduces the over-fitting by averaging the result.

    随机森林是一种监督学习算法,可用于分类和回归。 但是,它主要用于分类问题。 众所周知,森林由树木组成,更多的树木意味着更坚固的森林。 同样,随机森林算法在数据样本上创建决策树,然后从每个样本中获取预测,最后通过投票选择最佳解决方案。 它是一种集成方法,比单个决策树要好,因为它通过对结果求平均值来减少过度拟合。

    随机森林算法的工作 (Working of Random Forest Algorithm)

    We can understand the working of Random Forest algorithm with the help of following steps −

    我们可以通过以下步骤来了解随机森林算法的工作原理-

    • Step 1 − First, start with the selection of random samples from a given dataset.

      步骤1-首先,从给定的数据集中选择随机样本。

    • Step 2 − Next, this algorithm will construct a decision tree for every sample. Then it will get the prediction result from every decision tree.

      步骤2-接下来,该算法将为每个样本构造一个决策树。 然后它将从每个决策树中获得预测结果。

    • Step 3 − In this step, voting will be performed for every predicted result.

      步骤3-在此步骤中,将对每个预测结果进行投票。

    • Step 4 − At last, select the most voted prediction result as the final prediction result.

      步骤4-最后,选择投票最多的预测结果作为最终预测结果。

    The following diagram will illustrate its working −

    下图将说明其工作方式-

    Test Set

    用Python实现 (Implementation in Python)

    First, start with importing necessary Python packages −

    首先,从导入必要的Python包开始-

    
    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    
    

    Next, download the iris dataset from its weblink as follows −

    接下来,如下所示从其网络链接下载iris数据集:

    
    path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
    
    

    Next, we need to assign column names to the dataset as follows −

    接下来,我们需要为数据集分配列名,如下所示:

    
    headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']
    
    

    Now, we need to read dataset to pandas dataframe as follows −

    现在,我们需要将数据集读取为pandas数据框,如下所示:

    
    dataset = pd.read_csv(path, names=headernames)
    dataset.head()
    
    
    sepal-lengthsepal-widthpetal-lengthpetal-widthClass
    05.13.51.40.2Iris-setosa
    14.93.01.40.2Iris-setosa
    24.73.21.30.2Iris-setosa
    34.63.11.50.2Iris-setosa
    45.03.61.40.2Iris-setosa
    萼片长度 萼片宽度 花瓣长度 花瓣宽度
    0 5.1 3.5 1.4 0.2 鸢尾
    1个 4.9 3.0 1.4 0.2 鸢尾
    2 4.7 3.2 1.3 0.2 鸢尾
    3 4.6 3.1 1.5 0.2 鸢尾
    4 5.0 3.6 1.4 0.2 鸢尾

    Data Preprocessing will be done with the help of following script lines −

    数据预处理将在以下脚本行的帮助下完成-

    
    X = dataset.iloc[:, :-1].values
    y = dataset.iloc[:, 4].values
    
    

    Next, we will divide the data into train and test split. The following code will split the dataset into 70% training data and 30% of testing data −

    接下来,我们将数据分为训练和测试拆分。 以下代码将数据集拆分为70%的训练数据和30%的测试数据-

    
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)
    
    

    Next, train the model with the help of RandomForestClassifier class of sklearn as follows −

    接下来,在sklearn的RandomForestClassifier类的帮助下训练模型,如下所示-

    
    from sklearn.ensemble import RandomForestClassifier
    classifier = RandomForestClassifier(n_estimators=50)
    classifier.fit(X_train, y_train)
    
    

    At last, we need to make prediction. It can be done with the help of following script −

    最后,我们需要进行预测。 可以在以下脚本的帮助下完成-

    
    y_pred = classifier.predict(X_test)
    
    

    Next, print the results as follows −

    接下来,按如下所示打印结果-

    
    from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
    result = confusion_matrix(y_test, y_pred)
    print("Confusion Matrix:")
    print(result)
    result1 = classification_report(y_test, y_pred)
    print("Classification Report:",)
    print (result1)
    result2 = accuracy_score(y_test,y_pred)
    print("Accuracy:",result2)
    
    

    输出量 (Output)

    
    Confusion Matrix:
    [
       [14 0 0]
       [ 0 18 1]
       [ 0 0 12]
    ]
    Classification Report:
                   precision       recall     f1-score       support
    Iris-setosa        1.00         1.00        1.00         14
    Iris-versicolor    1.00         0.95        0.97         19
    Iris-virginica     0.92         1.00        0.96         12
    micro avg          0.98         0.98        0.98         45
    macro avg          0.97         0.98        0.98         45
    weighted avg       0.98         0.98        0.98         45
    
    Accuracy: 0.9777777777777777
    
    

    随机森林的利与弊 (Pros and Cons of Random Forest)

    优点 (Pros)

    The following are the advantages of Random Forest algorithm −

    以下是随机森林算法的优点-

    • It overcomes the problem of overfitting by averaging or combining the results of different decision trees.

      它通过平均或组合不同决策树的结果来克服过拟合的问题。

    • Random forests work well for a large range of data items than a single decision tree does.

      与单个决策树相比,随机森林在较大范围的数据项上效果很好。

    • Random forest has less variance then single decision tree.

      随机森林的方差小于单个决策树。

    • Random forests are very flexible and possess very high accuracy.

      随机森林非常灵活,并且具有很高的准确性。

    • Scaling of data does not require in random forest algorithm. It maintains good accuracy even after providing data without scaling.

      在随机森林算法中不需要数据缩放。 即使在没有缩放的情况下提供数据后,它仍保持良好的准确性。

    • Scaling of data does not require in random forest algorithm. It maintains good accuracy even after providing data without scaling.

      在随机森林算法中不需要数据缩放。 即使在没有缩放的情况下提供数据后,它仍保持良好的准确性。

    缺点 (Cons)

    The following are the disadvantages of Random Forest algorithm −

    以下是随机森林算法的缺点-

    • Complexity is the main disadvantage of Random forest algorithms.

      复杂性是随机森林算法的主要缺点。

    • Construction of Random forests are much harder and time-consuming than decision trees.

      与决策树相比,随机森林的建设更加困难且耗时。

    • More computational resources are required to implement Random Forest algorithm.

      实现随机森林算法需要更多的计算资源。

    • It is less intuitive in case when we have a large collection of decision trees .

      如果我们有大量的决策树集合,那么它就不太直观了。

    • The prediction process using random forests is very time-consuming in comparison with other algorithms.

      与其他算法相比,使用随机森林的预测过程非常耗时。

    翻译自: https://www.tutorialspoint.com/machine_learning_with_python/classification_algorithms_random_forest.htm

    随机森林分类算法

    展开全文
  • 数据挖掘算法——常用分类算法总结

    万次阅读 多人点赞 2019-06-17 10:55:22
    常用分类算法总结分类算法总结NBC算法LR算法SVM算法ID3算法C4.5 算法C5.0算法KNN 算法ANN 算法 分类算法总结 分类是在一群已经知道类别标号的样本中,训练一种分类器,让其能够对某种未知的样本进行分类。分类算法...

    分类算法

    分类是在一群已经知道类别标号的样本中,训练一种分类器,让其能够对某种未知的样本进行分类。分类算法属于一种有监督的学习。分类算法的分类过程就是建立一种分类模型来描述预定的数据集或概念集,通过分析由属性描述的数据库元组来构造模型。分类的目的就是使用分类对新的数据集进行划分,其主要涉及分类规则的准确性、过拟合、矛盾划分的取舍等。分类算法分类效果如图所示。

    常用的分类算法包括:NBC(Naive Bayesian Classifier,朴素贝叶斯分类)算法、LR(Logistic Regress,逻辑回归)算法、ID3(Iterative Dichotomiser 3 迭代二叉树3 代)决策树算法、C4.5 决策树算法、C5.0 决策树算法、SVM(Support Vector Machine,支持向量机)算法、KNN(K-Nearest Neighbor,K 最近邻近)算法、ANN(Artificial Neural Network,人工神经网络)算法等。

    NBC算法

    NBC 模型发源于古典数学理论,有着坚实的数学基础。该算法是基于条件独立性假设的一种算法,当条件独立性假设成立时,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。
    NBC算法的优点

    1. NBC算法逻辑简单,易于实现;
    2. NBC算法所需估计的参数很少;
    3. NBC 算法对缺失数据不太敏感;
    4. NBC 算法具有较小的误差分类率;
    5. NBC 算法性能稳定,健壮性比较好;

    NBC算法的缺点
    1.在属性个数比较多或者属性之间相关性较大时,NBC 模型的分类效果相对较差;
    2.算法是基于条件独立性假设的,在实际应用中很难成立,故会影响分类效果

    LR算法

    LR 回归是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。它与多元线性回归同属一个家族,即广义线性模型。简单来说多元线性回归是直接将特征值和其对应的概率进行相乘得到一个结果,逻辑回归则是在这样的结果上加上一个逻辑函数。在此选择LR 作为回归分析模型的代表进行介绍。
    LR算法的优点
    1.对数据中小噪声的鲁棒性好;
    2.LR 算法已被广泛应用于工业问题中;
    3.多重共线性并不是问题,它可结合正则化来解决。

    LR算法的缺点
    1.对于非线性特征,需要转换
    2.当特征空间很大时,LR的性能并不是太好

    SVM算法

    SVM 算法是建立在统计学习理论基础上的机器学习方法,为十大数据挖掘算法之一。通过学习算法,SVM 可以自动寻找出对分类有较好区分能力的支持向量,由此构造出的分类器可以最大化类与类的间隔,因而有较好的适应能力和较高的分准率。SVM 算法的目的在于寻找一个超平面H,该超平面可以将训练集中的数据分开,且与类域边界的沿垂直于该超平面方向的距离最大,故SVM 法亦被称为最大边缘算法。

    SVM算法的优点
    1.SVM 模型有很高的分准率;
    2. SVM 模型有很高的泛化性能;
    3. SVM 模型能很好地解决高维问题;
    4. SVM 模型对小样本情况下的机器学习问题效果好。

    SVM算法的缺点
    1.SVM 模型对缺失数据敏感;
    2.对非线性问题没有通用解决方案,得谨慎选择核函数来处理。

    ID3算法

    ID3 算法是一种基于决策树的分类算法,该算法是以信息论为基础,以信息熵和信息增益为衡量标准,从而实现对数据的归纳分类。信息增益用于度量某个属性对样本集合分类的好坏程度。ID3 算法的时间复杂度为O(n*|D|*log|D|)。

    ID3算法的优点

    1. ID3 算法建立的决策树规模比较小;
    2. 查询速度快。

    ID3算法的缺点
    1.不适合处理连续数据;
    2.难以处理海量数据集;
    3.建树时偏选属性值较大的进行分离,而有时属性值较大的不一定能反应更多的数据信息。

    C4.5 算法

    C4.5 算法是ID3 算法的修订版,采用信息增益率来加以改进,选取有最大增益率的分割变量作为准则,避免ID3 算法过度的适配问题。

    C4.5算法优点
    1.C4.5 继承了ID3 优点;
    2.在树构造过程中进行剪枝;
    3.能对不完整数据进行处理;
    4.能够完成对连续属性的离散化处理;
    5.产生的分类规则易于理解,准确率较高;
    6.用增益率来选择属性,克服了用增益选择属性时偏向选择取值多的属性。

    C4.5 算法缺点
    1.构造树时,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效;
    2.只适合于能驻留于内存的数据集,当训练集达到内存无法容纳时程序无法运行。

    C4.5 用于遥感分类过程中,首先依据通常的方式建立第一个模型。随后建立的第二个模型聚焦于被第一个模型错误分类的记录。以此类推,最后应用整个模型集对样本进行分类,使用加权投票过程把分散的预测合并成综合预测。Boosting 技术对于噪声不大的数据,通常通过建立的多模型来减少错误分类的影响,提高分类精度。

    C5.0算法

    C5.0 算法是 Quinlan 在C4.5 算法的基础上改进而来的产生决策树的一种更新的算法,它除了包括C4.5 的全部功能外,还引入许多新的技术,其中最重要的技术是提升(Boosting)技术,目的是为了进一步提高决策树对样本的识别率。同时C5.0 的算法复杂度要更低,使用更简单,适应性更强,因此具有更高的使用价值。

    C5.0算法的优点
    1.C5.0 模型能同时处理连续和离散的数据
    2.C5.0 模型估计
    模型通常不需要很长的训练时间;
    3.C5.0 引入Boosting 技术以提高分类的效率和精度;
    4.C5.0 模型易于理解,模型推出的规则有非常直观的解释;
    5.C5.0 模型在面对数据遗漏和特征很多的问题时非常稳健。

    C5.0算法的缺点
    目标字段必须为分类字段。

    美国地质调查局(USGS)在进行土地覆盖分类项目过程中研发了支持决策树分类的软件。软件分类模块主要是针对庞大数据量的数据集进行数据挖掘,找出特征,然后建立规则集进行决策分类。在分类模块中采用C5.0 模型来完成决策树分类、形成分类文件,实现遥感影像的分类。

    KNN 算法

    KNN 算法是Cover 和Hart 于1968 年提出的理论上比较成熟的方法,为十大挖掘算法之一。该算法的思路非常简单直观:如果一个样本在特征空间中的k 个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

    KNN算法的优点
    1.KNN 算法简单、有效;
    2.KNN 算法适用于样本容量比较大的类域的自动分类;
    3.由于KNN 方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN 方法较其他方法更为适合。

    KNN算法的缺点
    1.KNN 算法计算量较大;
    2.KNN 算法需要事先确定K 值;
    3.KNN 算法输出的可解释不强;
    4. KNN 算法对样本容量较小的类域很容易产生误分。

    ANN 算法

    人工神经网络(ANN)算法就是一组连续的输入/输出单元,其中每个连接都与一个权相关。在学习阶段,通过调整神经网络的权,使得能够预测样本的正确类标号来学习。

    ANN算法的优点
    1.能处理数值型及分类型的属性;
    2.分类的准确度高,分布并行处理能力强;
    3.对包含大量噪声数据的数据集有较强的鲁棒性和容错能力。

    ANN算法的缺点
    1.不能观察之间的学习过程;
    2.学习时间过长,甚至可能达不到学习的目的;
    3.对于非数值型数据需要做大量数据预处理工作;
    4.输出结果难以解释,会影响到结果的可信度和可接受程度;
    5.神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值。

    小结:

    算法名称收敛时间是否过度拟合是否过渡拟合缺失数据敏感度训练数据量
    NBC存在不敏感无要求
    LR存在敏感无要求
    SVM一般存在敏感小数据量
    ID3存在不敏感小数据集
    C4.5存在不敏感小数据集
    C5.0不存在不敏感大数据集
    ANN存在敏感大数据集
    KNN存在敏感数据量多

    创建了一个技术闲聊群:有兴趣可加我微信,拉你一起讨论杂七杂八的技术,虽然大家都不怎么活跃!
    加好友备注:你的博客名 && 随便给我的任意文章点个赞或留言
    在这里插入图片描述

    展开全文
  • 贝叶斯分类算法

    千次阅读 多人点赞 2018-07-31 16:09:12
    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下我们学习会上讲到...

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下我们学习会上讲到的朴素贝叶斯分类算法,希望有利于他人理解。

     

    1  分类问题综述

     对于分类问题,其实谁都不会陌生,日常生活中我们每天都进行着分类过程。例如,当你看到一个人,你的脑子下意识判断他是学生还是社会上的人;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱”之类的话,其实这就是一种分类操作。

     

    既然是贝叶斯分类算法,那么分类的数学描述又是什么呢?

     

    从数学角度来说,分类问题可做如下定义:已知集合,确定映射规则y = f(x),使得任意有且仅有一个,使得成立。

     

    其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(特征集合),其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。

     

    分类算法的内容是要求给定特征,让我们得出类别,这也是所有分类问题的关键。那么如何由指定特征,得到我们最终的类别,也是我们下面要讲的,每一个不同的分类算法,对应着不同的核心思想。

     

    本篇文章,我会用一个具体实例,对朴素贝叶斯算法几乎所有的重要知识点进行讲解。

     

    2  朴素贝叶斯分类

    那么既然是朴素贝叶斯分类算法,它的核心算法又是什么呢?

    是下面这个贝叶斯公式:

     

     

    换个表达形式就会明朗很多,如下:

     

     

    我们最终求的p(类别|特征)即可!就相当于完成了我们的任务。

     

    3  例题分析

    下面我先给出例子问题。

     

    给定数据如下:

     

     

    现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

     

    这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,我就能给出嫁或者不嫁的答案!

    这里我们联系到朴素贝叶斯公式:

     

     

    我们需要求p(嫁|(不帅、性格不好、身高矮、不上进),这是我们不知道的,但是通过朴素贝叶斯公式可以转化为好求的三个量.

     

    p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)(至于为什么能求,后面会讲,那么就太好了,将待求的量转化为其它可求的值,这就相当于解决了我们的问题!)

     

    4  朴素贝叶斯算法的朴素一词解释

    那么这三个量是如何求得?

     

    是根据已知训练数据统计得来,下面详细给出该例子的求解过程。

    回忆一下我们要求的公式如下:

     

     

    那么我只要求得p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)即可,好的,下面我分别求出这几个概率,最后一比,就得到最终结果。

     

    p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁),那么我就要分别统计后面几个概率,也就得到了左边的概率!

     

    等等,为什么这个成立呢?学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧!

     

    对的!这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了!

     

    但是为什么需要假设特征之间相互独立呢?

     

     

    1、我们这么想,假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,这么说,我们这个例子有4个特征,其中帅包括{帅,不帅},性格包括{不好,好,爆好},身高包括{高,矮,中},上进包括{不上进,上进},那么四个特征的联合概率分布总共是4维空间,总个数为2*3*3*2=36个。

     

    36个,计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因。

     

    2、假如我们没有假设特征之间相互独立,那么我们统计的时候,就需要在整个特征空间中去找,比如统计p(不帅、性格不好、身高矮、不上进|嫁),

     

    我们就需要在嫁的条件下,去找四种特征全满足分别是不帅,性格不好,身高矮,不上进的人的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况。 这样是不合适的。

     

    根据上面俩个原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。

     

    好的,上面我解释了为什么可以拆成分开连乘形式。那么下面我们就开始求解!

     

    我们将上面公式整理一下如下:

     

     

    下面我将一个一个的进行统计计算(在数据量很大的时候,根据中心极限定理,频率是等于概率的,这里只是一个例子,所以我就进行统计即可)。

     

    p(嫁)=?

    首先我们整理训练数据中,嫁的样本数如下:

     

    则 p(嫁) = 6/12(总样本数) = 1/2

     

    p(不帅|嫁)=?统计满足样本数如下:

     

    则p(不帅|嫁) = 3/6 = 1/2 在嫁的条件下,看不帅有多少

     

    p(性格不好|嫁)= ?统计满足样本数如下:

     

    则p(性格不好|嫁)= 1/6

     

    p(矮|嫁) = ?统计满足样本数如下:

     

    则p(矮|嫁) = 1/6

     

    p(不上进|嫁) = ?统计满足样本数如下:

     

    则p(不上进|嫁) = 1/6

     

    下面开始求分母,p(不帅),p(性格不好),p(矮),p(不上进)

    统计样本如下:

     

     

    不帅统计如上红色所示,占4个,那么p(不帅) = 4/12 = 1/3

     

     

    性格不好统计如上红色所示,占4个,那么p(性格不好) = 4/12 = 1/3

     

     

    身高矮统计如上红色所示,占7个,那么p(身高矮) = 7/12

     

     

    不上进统计如上红色所示,占4个,那么p(不上进) = 4/12 = 1/3

     

    到这里,要求p(不帅、性格不好、身高矮、不上进|嫁)的所需项全部求出来了,下面我带入进去即可,

     

    = (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)

     

    下面我们根据同样的方法来求p(不嫁|不帅,性格不好,身高矮,不上进),完全一样的做法,为了方便理解,我这里也走一遍帮助理解。首先公式如下:

     

     

    下面我也一个一个来进行统计计算,这里与上面公式中,分母是一样的,于是我们分母不需要重新统计计算!

     

    p(不嫁)=?根据统计计算如下(红色为满足条件):

     

     

    则p(不嫁)=6/12 = 1/2

     

    p(不帅|不嫁) = ?统计满足条件的样本如下(红色为满足条件):

     

     

    则p(不帅|不嫁) = 1/6

     

    p(性格不好|不嫁) = ?据统计计算如下(红色为满足条件):


    则p(性格不好|不嫁) =3/6 = 1/2

     

    p(矮|不嫁) = ?据统计计算如下(红色为满足条件):

     

    则p(矮|不嫁) = 6/6 = 1

     

    p(不上进|不嫁) = ?据统计计算如下(红色为满足条件):

    则p(不上进|不嫁) = 3/6 = 1/2

     

    那么根据公式:

     

    p (不嫁|不帅、性格不好、身高矮、不上进) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)

    很显然(1/6*1/2*1*1/2) > (1/2*1/6*1/6*1/6*1/2)

     

    于是有p (不嫁|不帅、性格不好、身高矮、不上进)>p (嫁|不帅、性格不好、身高矮、不上进)

     

    所以我们根据朴素贝叶斯算法可以给这个女生答案,是不嫁!!!!

     

    5  朴素贝叶斯分类的优缺点

    优点:

    (1) 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化医学即可!)

    (2)分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)

     

    缺点:

     

    理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。

     

    而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

     

    整个例子详细的讲解了朴素贝叶斯算法的分类过程,希望对大家的理解有帮助~

     

    参考:李航博士《统计学习方法》

    算法杂货铺--分类算法之朴素贝叶斯分类(Naive Bayesian classification)

     

    致谢:德川,皓宇,继豪,施琦

    原文地址:https://blog.csdn.net/amds123/article/details/70173402

    展开全文
  • 图像分类算法优化技巧

    万次阅读 多人点赞 2018-12-26 20:58:43
    最后作者也证明了在分类算法中的这些优化点在其他图像任务中同样有效,比如目标检测任务,如Table8所示,可以看出在ImageNet数据集上表现最好的图像分类算法同样在VOC数据集上有最后的表现。 另外在语义分割任务...
  • 机器学习(额外篇):聚类算法和分类算法的区别

    千次阅读 多人点赞 2019-06-22 10:54:30
    机器学习中有两类的大问题,一个是分类,一个是聚类...分类算法 1.分类算法的说法: 分类(classification):分类任务就是通过学习得到一个目标函数f,把每个属性集x映射到一个预先定义的类标号y中。 分类是根据一...
  • 分类算法简介

    千次阅读 2019-06-06 22:15:36
    9 各种分类算法比较 根据这篇论文所得出的结论, Calibrated boosted trees的性能最好,随机森林第二,uncalibrated bagged trees第三,calibratedSVMs第四, uncalibrated neural nets第五。 性能较差的是朴素...
  • 聚类算法和分类算法

    千次阅读 2019-03-05 20:22:56
    常用的分类算法包括: 决策树分类法 朴素的贝叶斯分类算法(native Bayesian classifier) 基于支持向量机(SVM)的分类器 神经网络法 k-最近邻法(k-nearest neighbor,kNN) 模糊分类法 下文出处 常见的聚类算法...
  • C++实现SVM分类算法

    热门讨论 2011-10-18 18:13:18
    SVM有如下特征:(1)SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数...本代码通过C++实现SVM的分类算法,并通过SSE实现最优解的快速计算,学习SVM的同学可以参考一下,如有不足,请指正。
  • GBDT分类算法简介 GBDT二分类算法 2.1 逻辑回归的对数损失函数 2.2 GBDT二分类原理 GBDT二分类算法实例 手撕GBDT二分类算法 4.1 用Python3实现GBDT二分类算法 4.2 用sklearn实现...
  • 传统分类算法以及流计算分类算法

    千次阅读 2016-11-27 11:18:50
    传统的数据挖掘算法如ID3、C4.5首先都是通过先将数据存储到静态数据库中,当需要进行数据挖掘时再将数据提取出来进行处理,并且现行...K近邻分类算法、决策树分类算法和贝叶斯分类算法都是一些常用的针对静态数据集的分
  • 分类算法 -- 决策树ID3算法

    万次阅读 多人点赞 2019-02-17 01:27:43
    决策树算法是非常常用的分类算法,其分类的思路非常清晰,简单易懂。并且它也是一个很基础的算法,集成学习和随机森林算法是以其为基础的。 算法简介 对于决策树算法,其输入是带有标签的数据,输出是一颗决策树。...
  • 人工智能实验三:分类算法实验

    万次阅读 2019-04-14 17:19:14
    1、巩固4种基本的分类算法的算法思想:朴素贝叶斯算法,决策树算法,人工神经网络,支持向量机算法; 2、能够使用现有的分类器算法代码进行分类操作; 3、学习如何调节算法的参数以提高分类性能; 二、实验硬件...
  • 机器学习经典算法的C语言代码,比如:ID3算法 人脸识别源代码 K紧邻算法、人工神经网络
  • K-近邻算法(分类算法

    千次阅读 2020-11-23 22:35:24
    来源:KNN算法最早是由Cover和Hart提出的一种分类算法。 注:K-近邻算法:需要做标准化处理。 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的...
  • 多分类及多标签分类算法

    万次阅读 多人点赞 2019-04-08 19:49:55
    1、单标签二分类算法原理 1、单标签二分类这种问题是我们最常见的算法问题,主要是指label 标签的取值只有两种,并且算法中只有一个需要预测的label标签; 直白来讲就是每个实例的可能类别只有两种(A or B);...
  • 常见分类算法优缺点

    千次阅读 2018-10-21 21:36:54
    机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM...
  • 【数据挖掘】14种分类算法展示

    千次阅读 2019-06-23 19:26:02
    本篇重视使用函数来提高代码复用率,同时使用高达14种涵盖sklearn、xgboost、lightgbm和Keras框架的分类算法进行文本分类,适合进阶和提高。 前言 本篇文本分类实战训练是以完整的文本分类项目流程来写的,比较...
  • 常见分类算法应用范围/数据要求

    千次阅读 2019-10-28 19:58:08
    单一的分类算法:决策树、贝叶斯、人工神经网络、K-近邻、支持向量机和基于关联规则的分类,HMM 组合分类算法:Bagging和Boosting k-近邻(kNN,k-Nearest Neighbors)算法 找出与未知样本x距离最近的k个训练样本,看...
  • 脑机接口EEG信号分类算法

    万次阅读 多人点赞 2019-01-18 15:26:50
    脑机接口技术中EEG信号的特征提取和模式识别算法
  • 机器学习之KNN最邻近分类算法

    万次阅读 多人点赞 2018-09-15 13:13:33
    KNN(K-Nearest Neighbor)最邻近分类算法是数据挖掘分类(classification)技术中最简单的算法之一,其指导思想是”近朱者赤,近墨者黑“,即由你的邻居来推断出你的类别。 KNN最邻近分类算法的实现原理:为了...
  • 详解朴素贝叶斯分类算法

    万次阅读 多人点赞 2018-08-15 22:25:31
    带你搞懂朴素贝叶斯分类算法   带你搞懂朴素贝叶斯分类算 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类...
  • 目录简介一、监督学习1、决策树(Decision Tree,DT)2、朴素贝叶斯分类器(Naive Bayesian Model,NBM)3、最小二乘法(Least squares)4、逻辑回归(Logistic Regression)5、支持向量机(SVM)6、K最近邻算法...
  • 回归问题和分类问题的本质一样,都是针对一个输入做出一个输出预测,其区别在于输出变量的类型。 分类问题是指,给定一个新的模式,根据训练集推断它所对应的类别(如:+1,-1),是一种定性输出,也叫离散变量预测...
  • Adaboost基本二分类算法

    千次阅读 2018-12-04 15:40:42
    最早类型的Adaboost是由Yoav Freund和Robert E.Schapire提出的,一种用于二分类的boosting集成学习方法。也是李航《统计学习方法》中所介绍的Adaboost。它将一系列弱分类器的线性组合,生成一个强分类器。需要注意的...
  • 分类算法常用的评价指标

    万次阅读 2019-06-18 16:23:27
    针对一个二分类问题,即将实例分成正类(positive)或负类(negative),在实际分类中会出现以下四种情况: (1)若一个实例是正类,并且被预测为正类,即为真正类(True Positive TP) (2)若一个实例是正类,但是...
  • 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码1 蝙蝠算法与BP神经网络分类模型1.1 蝙蝠算法BA1.2 one-hot编码2 基于蝙蝠...
  • K近邻分类算法

    千次阅读 2018-09-19 15:59:25
    K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 568,863
精华内容 227,545
关键字:

分类算法