学习笔记-----Python机器学习

一、分类

机器学习的分类算法众多。经典的分类算法:K近邻、决策树和朴素贝叶斯的原理和实现;

1、3个基本分类模型

(1)K近邻分类器

K近邻分类器,也叫KNN,思想非常简单,同时也非常有效;
KNN:通过计算待分类数据点,与已有数据集中的所有数据点的距离。取距离最小的前K个点,根据“少数服从多数的原则”,将这个数据点划分为出现次数最多的那个类别;

sklearn中的k近邻分类器
在sklearn库中,可以使用sklearn.neighbors.KNeighborsClassifier创建一个K近邻分类器,主要参数有:
n_neighbors:用于指定分类器中K的大小(默认值为5);

weights:设置选中的K个点对分类结果影响的权重(默认值为平均权重“uniform”,可以选择“distance”代表越近的点权重越高,或者传入自己编写的以距离为参数的权重计算函数);

algorithm:设置用于计算临近点的方法,因为当数据量很大的情况下计算当前点和所有点的距离,再选出最近的K个点,这个计算量是很费时的,所以选项中有ball_tree、kd_tree和brute,分别代表不同的寻找邻居的优化算法,默认值为auto,根据训练数据自动选择;

(1.2)小案例

X = [[0], [1], [2], [3]]#创建一组数据X和它对应的标签y
y = [0, 0, 1, 1]

#导入import语句导入K近邻分类器
from sklearn.neighbors import KNeighborsClassifier
"""
参数n_neighbors设置为3,即使用最近的3个邻居作为分类的依据,
其他参数保持默认,并将创建好的实例赋给变量neigh
"""
neigh = KNeighborsClassifier(n_neighbors=3)

#调用fit()函数,将训练数据X和标签y送入分类器进行学习
neigh.fit(X, y)

"""
调用predict()函数,对未知分类样本[1.1],可以直接并将需要
分类的数据构造为数组形式作为参数传入,得到分类标签作为返回值
"""
print(neigh.predict([[2]]))
(1.3)KNN使用经验

在实际使用时,我们使用所有训练数据构成特征X和标签y,使用fit()函数进行训练。在正式分类时,通过一次性构造测试集或者一个一个输入样本的方式,得到样本对应的分类结果。有关K的取值:
如果较大,相当于使用较大邻域中的训练实例进行预测,可以减少估计误差,但是距离较远的样本也会对预测起作用,导致预测错误。
相反地,如果K较小,相当于使用较小的邻域进行预测,如果邻居恰好是噪声点,会导致过拟合。
一般情况下,K会倾向选取较小的值,并使用交叉验证法选取最优K值。

(2)决策树分类器

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

sklearn中的决策树
在sklearn库中,可以使用sklearn.tree.DecisionTreeClassifier创建一个决策树进行分类,其主要参数有:
criterion:用于选择属性的准则,可以传入‘gini’代表基尼系数,或者“entropy”代表信息增益;
max_features:表示在决策树结点进行分裂时,从多少个特征中选择最优特征。可以设定固定数目、百分比或其他标准。它的默认值是使用所有特征个数。

决策树本质上是寻找一种对特征空间上的划分,旨在构建一个训练数据拟合的好,并且复杂度小的决策树。

实际使用中,需要根据数据情况,调整DecisionTreeClassifier类中传入的参数,比如选择合适的criterion,设置随机变量等。

(3)朴素贝叶斯分类器

朴素贝叶斯分类器是一个以贝叶斯定理为基础的多分类的分类器。

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

sklearn中的朴素贝叶斯
在sklearn库中,实现了三个朴素贝叶斯分类器,如:

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

区别在于假设某一特征的所有属于某个类别的观测值符合特定分布。如,分类问题的特征包括人的身高,身高符合高斯分布,这类问题符合高斯朴素贝叶斯。

sklearn中的朴素贝叶斯
在sklearn库中,可以使用sklearn.naive_bayes.GussianNB创建一个高斯朴素贝叶斯分类器,其参数有:
priors:给定各个类别的先验概率。如果为空,则按训练数据的实际情况进行统计;如果给定先验概率,则在训练过程中不能更改。

(3.2)小案例
import numpy as np
#导入numpy库,并构造训练数据X和Y
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
Y = np.array([1, 1, 1, 2, 2, 2])
#使用import语句导入朴素贝叶斯分类器
from sklearn.naive_bayes import GaussianNB
"""
使用默认参数,创建一个高斯朴素贝叶斯分类器,并
将该分类器赋给变量clf
"""
clf = GaussianNB(priors=None)
"""
类似的,使用fit()函数进行训练,并使用predict()函数进行预测,得到预测
结果为1。(测试时可以构造二维数组达到同时预测多个样本的目的
"""
clf.fit(X, Y)
print(clf.predict([[-0.8, -1]]))
(3.3)朴素贝叶斯使用经验

朴素贝叶斯是典型的生成学习方法,由训练数据学习联合概率分布,并求得后验概率分布。
朴素贝叶斯一般在小规模数据上的表现很好,适合进行多分类任务。

二、回归

1、线性回归
2.非线性回归

注:参见mooc《python机器学习应用》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值