fireholder.github.io

伪文艺女青年,状高冷,话少爱热闹


Blog | Archive | About

Python 机器学习 Note 3

05 Jul 2017 | Python

监督学习的三种分类器模型

K近邻分类器(KNN)

通过计算待分类数据点,与已有数据集中的所有数据点的距离。取 距离最小的前K个点,根据“少数服从多数“的原则,将这个数据点划分为出现次数最多的那个类别。

sklearn.neighbors.KNeighborsClassifier

主要参数

使用方法

X = [[0], [1], [2], [3]]      //创建一组数据 X
y = [0, 0, 1, 1]              //创建它对应的标签 y
from sklearn.neighbors import KNeighborsClassifier          //导入K 近邻分类器
neigh = KNeighborsClassifier(n_neighbors=3)                 //参数 n_neighbors 设置为 3,即使用最近的3个邻居作为分类的依据,其他参数保持默认值,并将创建好的实例赋给变量 neigh
neigh.fit(X, y)                //调用 fit() 函数,将训练数据 X  标签 y 送入分类器进行学习
print(neigh.predict([[1.1]]))   //调用 predict() 函数,对未知分类样本 [1.1] 分类,可以直接并将需要分类的数据构造为数组形式作为参数传入,得到分类标签作为返回值

样例输出值是 0,表示K近邻分类器通过计算样本 [1.1] 与训练数据的距离,取 0,1,2 这 3 个邻居作为依据,根据“投票法”最终将样本分为类别 0。

有关K 的取值

决策树

决策树是一种树形结构的分类器,通过顺序 询问分类点的属性决定分类点最终的类别。通常 根据特征的信息增益或其他指标,构建一颗决策 树。在分类时,只需要按照决策树中的结点依次 进行判断,即可得到样本所属类别。

sklearn.tree.DecisionTreeClassifier

主要参数

使用方法

from sklearn.datasets import load_iris          //导入 sklearn 内嵌的鸢尾花数据集
from sklearn.tree import DecisionTreeClassifier            //导入决策树分类器
from sklearn.cross_validation import cross_val_score                  //导入计算交叉验
证值的函数 cross_val_score
clf = DecisionTreeClassifier()        //使用默认参数,创建一颗基于基尼系数的决策树,并将该决策树分类器赋值给变量 clf
iris = load_iris()               //将鸢尾花数据赋值给变量 iris
cross_val_score(clf, iris.data, iris.target, cv=10)
//将决策树分类器做为待评估的模型,iris.data鸢尾花数据做为特征,iris.target鸢尾花分类标签做为目标结果,通过设定cv10,使用10折交叉验
证。得到最终的交叉验证得分。

朴素贝叶斯

朴素贝叶斯分类器是一个以贝叶斯定理为基础 的多分类的分类器。 对于给定数据,首先基于特征的条件独立性假 设,学习输入输出的联合概率分布,然后基于此模 型,对给定的输入x,利用贝叶斯定理求出后验概 率最大的输出y。

sklearn中的朴素贝叶斯

分类器 描述
naive_bayes.GussianNB 高斯朴素贝叶斯
naive_bayes.MultinomialNB 针对多项式模型的朴素贝叶斯分类器
naive_bayes.BernoulliNB 针对多元伯努利模型的朴素贝叶斯分类器

主要参数

使用方法

import numpy
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])                 //构造训练数据 X  y
Y = np.array([1, 1, 1, 2, 2, 2])
from sklearn.naive_bayes import GaussianNB             //导入朴素贝叶斯分类器
clf = GaussianNB()     //创建一个高斯朴素贝叶斯分类器,并将该分类器赋给变量clf
clf.fit(X, Y)              //使用 fit() 函数进行训练
print(clf.predict([[-0.8, -1]]))        //使用 predict() 函数进行预测

参考资料:中国大学mooc

comments powered by Disqus

Older · View Archive (56)

Python 机器学习 Note 2

无监督学习之降维

Newer

Python 机器学习 Note 4