scikit-learn机器学习库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gx_1983/article/details/78143983

scikit-learn机器学习库

  1. 官网链接 官网链接
  2. 用于数据挖掘和数据分析的简单高效的工具。
  3. 能够被所有人使用,能够在各种场景中重用。
  4. 构建在NumPy,sciPy和matplotlib库之上。
  5. 开源的,基于BSD证书的,可用于商业产品的开源机器学习库。

sklearn库内容分类

  1. 分类 Classification
  2. 回归 Regression
  3. 聚类 Clustering
  4. 维度规约 Dimensionality reduction
  5. 模型选择
  6. 预处理

分类 Classification

KNN (K Nearest Neighbor, K近邻法)

  1. 如果一个样本在特征空间的K个最相似(即在特征空间中距离最近)的样本中的大多数属于某个类别,则该样本也属于这个类别。
  2. knn算法的结果在很大成都上取决于K值的选择。
  3. knn算法的优势在于:
    1. 通过点之间的距离来决定相似度,避免了对象之间的比价问题,通常对象之间的比较需要更为耗时和复杂的方法。只比较距离相对更容易计算。
    2. knn通过k个最近样本中占优势的类别来决定当前点的类别,而不是只由一个点来决定类别,通常更为准确。
  4. knn分类的不足之处:
    1. 无法处理样本的不平衡性。如果一个类的样本容量很大,而其他类的样本容量很小时,很有可能当输入一个新样本时,该样本的k个邻居中大容量类的样本占据多数。所以在使用knn的时候最好几种类别的样本数量一致。
    2. 计算量比较大。要计算全体已知样本的相似度。不过通过采用kd-tree或者ball-tree能够有效避免计算量过大的问题。
    3. 该算法适用于样本容量较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分类。knn算法对样本容量要比其余算法敏感。
  5. sklearn中KNN算法原型
    1. 所在模块 sklearn.neighbors.KNeighborsClassifier
    2. 函数原型:
class sklearn.neighbors.KNeighborsClassifier(
    n_neighbors=5,  //knn中k的值,即选k个最近的点计算分类
    weights=’uniform’, 
    algorithm=’auto’, //有四种计算点之间距离的方法,auto,kd-tree,ball-tree, brute方法
    leaf_size=30, 
    p=2, 
    metric=’minkowski’, 
    metric_params=None, 
    n_jobs=1, //使用多少job计算knn,-1标识根据计算机cpu核数决定
    **kwargs
)

决策树

  1. http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html

贝叶斯分类

  1. 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。贝叶斯分类的理论基础是贝叶斯定理和特征之间相互独立的假设(条件独立性)。
  2. 贝叶斯定理:
    贝叶斯定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。
    表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为: P(A|B) = P(AB)/P(B)。
    贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。
    下面直接给出贝叶斯定理:
    P(B|A) = P(A|B)P(B)/P(A)
    贝叶斯定理的简单证明:
 1. P(AB) =P(A|B)P(B) = P(BA) = P(B|A)P(A)
 2. 基于上面公式得到 P(B|A) = P(A|B)P(B)/P(A),定理得证。
  1. 条件独立性
    如何理解概率论中的“条件独立性”?
    称事件A₁,A₂对于给定事件A为条件独立的,如果P(A₁A₂|A)=P(A₁|A)•P(A₂|A),或等价地P(A₁|A₂A)=P(A₁|A).

朴素贝叶斯分类

朴素贝叶斯分类为什么叫朴素贝叶斯分类?

  1. 因为朴素贝叶斯分类的方法中假设了各个特征都是条件独立的。
  2. 假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,比如,有4个特征,其中帅包括{帅,不帅},性格包括{不好,好,爆好},身高包括{高,矮,中},上进包括{不上进,上进},那么四个特征的联合概率分布总共是4维空间,总个数为2*3*3*2=36个。
    特征的36个组合,计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因。
    (如果没有各个特征条件独立的假设,那么P(X|Y) = P(a1,a2,a3 | Y) = P(a1 | Y)P(a2 | Y)P(a3 | Y)就不成立了,从而计算量呈指数增长,最终导致不可计算。)
  3. 假如我们没有假设特征之间相互独立,那么我们统计的时候,就需要在整个特征空间中去找,比如统计p(不帅、性格不好、身高矮、不上进|嫁),我们就需要在嫁的条件下,去找四种特征全满足分别是不帅,性格不好,身高矮,不上进的人的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况。 这样是不合适的。
  4. 根据上面俩个原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。

朴素贝叶斯分类的原理及举例

朴素贝叶斯分类原理
  1. 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率(即知道了P(A|B)如何获得P(B|A)),哪个最大,就认为此待分类项属于哪个类别。通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你你猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础。
    朴素贝叶斯分类的正式定义如下:
朴素贝叶斯分类的定义:
    1. 设 x = {a1,a2,a3, ... , am}为一个待分类项,其中a为x的特征属性。
    2. 训练样本的类别集合为C={y1,y2,y3, ... ,yn}
    3. 计算P(y1|x),P(y2|x), ... , P(yn|x)
    4. 从第三步骤的结果中选取最大的P(yn|x)作为x的最终分类。

从上面的步骤中可以看到,朴素贝叶斯分类最关键的步骤就是第三步,根据贝叶斯定理及特征条件独立假设,可以得出:

 1. P(Yi|X) = P(X|Yi)P(Yi) / P(X)
 2. 我们的目的是求出所有P(Yi|X)的最大值,所以不必关注P(X),P(X)对所有Yi都是相同的,都等于 1/样本总数,我们只是比较X属于各个分类的大小,而P(X)对于所有分类都是相同的,所以不需要关心P(X)的准确值。
 3. P(Yi)的计算如下: 训练样本中Yi类别样本总数/总样本数。
 4. 现在如果知道P(X|Yi)的话我们就能够计算出P(Yi|X)了。而根据特征条件独立这一假设,我们可以得到P(X|Yi) = P(a1,a2,a3 | Yi)= P(a1 |Yi)P(a2 |Yi)P(a3| Yi),所以,只要从训练样本中统计出 “属于Yi分类且具有a1属性的样本 / 属于Yi分类的所有样本”即可,这个很容易从训练样本中统计得到。

从上面的代码中,我们就知道了朴素贝叶斯分类的整个过程。

朴素贝叶斯分类举例

以下链接是朴素贝叶斯分类的一个例子,展示了朴素贝叶斯分类的计算过程:http://kb.cnblogs.com/page/76194/

先验概率与证据及似然的概念

http://blog.csdn.net/lsldd/article/details/41542107

几种流行的朴素贝叶斯分类方法

  1. 以下链接展示了几种朴素贝叶斯分类的特性。其中所谓的高斯,多项式和伯努利分布是指贝叶斯定理中的 P(X|Yi) 属于哪个模型。http://blog.csdn.net/u012162613/article/details/48323777
高斯朴素贝叶斯
  1. 高斯分布为的特征值为连续值。
  2. 适用于特征具有连续值,且所有特征都遵循高斯分布即正态分布的情况。
多项式朴素贝叶斯
  1. 二项分布和多项分布(多项式分布:特征值为离散值,可取多个值)
    http://blog.csdn.net/shuimu12345678/article/details/30773929
  2. 对于连续的属性是否能够转换为离散值,从而使用多项式朴素贝叶斯?
    答:转换的时候需要采用一定的策略,转换后的离散值空间最好每个离散值都覆盖到,因为,对于没有覆盖到的离散值,则P(X | Yi)=0。即使我们采用了平滑方法,例如拉普拉斯平滑,但是计算出来的概率也是不对的。因此,对于连续值,如果没有好的样本和方法能够映射到合适的离散空间,那么久应该使用高斯朴素贝叶斯,而不应该使用多项式朴素贝叶斯。
伯努利朴素贝叶斯
  1. 伯努利分布(特征值为离散值,去两个值)
    http://blog.csdn.net/michael_r_chang/article/details/39188321

回归 Regression

聚类 Clustering

维度规约 Dimensionality reduction

模型选择

预处理

猜你喜欢

转载自blog.csdn.net/gx_1983/article/details/78143983