Mooc机器学习-02监督学习

1 监督学习

  利用一组带标签的数据, 学习从输入到输出的映射, 然后将这种映射关系应用到未知数据, 达到分类或者回归的目的

  (1) 分类: 当输出是离散的, 学习任务为分类任务

    

    输入: 一组有标签的训练数据(也叫观察和评估), 标签表明了这些数据(观察)的所属类别, 图中"猫"和"狗"就是标签

    输出: 分类模型根据这些训练数据, 训练自己的模型参数, 学习出一个适合这组数据的分类器, 当有新数据(非训练数据)需要进行类别判断, 就可以将这组数据作为输入送给学习好的分类器进行判断(得到标签)

    训练集: 训练模型已经标注的数据, 用来建立模型发现规律

    测试集: 已标注的数据, 只不过把标注隐藏了, 再送给训练好的模型, 比对结果与原来的标注, 评判该模型的学习能力  

    一般来说, 获得了一组标注好的数据, 70%当做训练集, 30%当做测试集, 另外还有交叉验证法, 自助法来评估学习模型

    评价标准

      1) 准确率

        所有预测对的

        把正类预测成正类(TP)

        把负类预测成负类(TN)

        准确率 = (TP+TN)/总数量

      2) 精确率

        以二分类为例

        预测为正的样本是真的正样本

        把正类预测为正类(TP)

        把负类预测为正类(FP)

        

      3) 召回率

        样本中的正比例有多少被预测正确

        把正类预测成正类(TP)

        把正类预测成负类(FN)

        

    sklearn提供的分类函数有:

      K近邻(knn), 朴素贝叶斯(naivebayes), 支持向量机(svm), 决策树(decision tree), 神经网络模型(Neural networks)

  (2) 回归: 当输出是连续的, 学习任务是回归任务

    通过回归, 可以了解两个或多个变数是否相关, 方向及其强度, 可以建立数学模型来观察特定变数以及预测特定的变数

    回归可以根据给出的自变量估计因变量的条件期望

    

    sklearn提供的回归函数放在了两个子模块

      sklearn.linear_model, 线性函数: 普通线性回归函数(LinearRegression), 岭回归(Ridge), Lasso

      sklearn.preprocessing, 非线性回归: 多项式回归(PolynomialFeatures)

    回归应用

      对一些带有时序信息的数据进行预测或者趋势拟合, 在金融以及其他涉及时间序列分析的领域

      股票趋势预测

      交通流量预测

2 分类

2.1 人体运动信息评级实例

  可穿戴设备可以获取人体各项数据, 通过这些数据可以进行分析和建模, 可以对用户状况进行判断

  在数据源中有一个特征文件*.feature, 一个标签文件*.label

  特征文件包含41列特征 

  

  

  温度: 静止时人体一般维持在36.5度上下, 当温度高于37度时, 可能是进行短时间的剧烈运动

   一型/二型三轴加速区: 这是两个型号的加速度传感器, 两个加速度传感器可以相互印证来保证数据的完整性准确性, 获得的数据是在x,y,z三个轴上的加速度, 如z轴上加速度剧增, 很有可能就是人体向上跳

  陀螺仪: 获得用户当前身体的角度, 可以判断姿态

  磁场: 检测用户周围磁场强度和数值大小, 可以帮助我们理解用户所在的环境, 一般地, 人在一个办公场所, 用户座位的周围的磁场大体上是固定的, 因此当磁场发生改变时, 可以推测用户的位置和场景发生了变化

  标签文件对应于特征文件的每一行, 总共有25中姿态

2.2 基本分类模型

  (1) k近邻分类器(KNN)

    原有已经分类好的点, 现加入新的点, 判断其类别就是查看所有点与它的距离, 取前K个, 这K个点哪一部分的的点的数量多, 这个新加入的点就属于哪一部分

    

    创建knn分类器

      sklearn.neighbors.KNeighborsClassifier()

      n_neighbors: 用于指定分类器中K的大小, 默认为5

      weights: 设置K个点对分类结果影响的权重, 默认平均权重uniform, 距离权重(越近权重越高)distance, 或者是自定义计算函数

      algorithm: 寻找临近点的方法, 默认为auto(根据数据自动选择), ball_tree, kd_tree, brute等

    使用kkn

X = [[0],[1],[2],[3]]
y = [0,0,1,1]
from sklearn.neighbors import KNeighborsClassifier
neight = KNeighborsClassifier(n_neighbors=3)
neight.fit(X,y)
Out[5]:
KNeighborsClassifier(algorithm=‘auto‘, leaf_size=30, metric=‘minkowski‘,
           metric_params=None, n_jobs=1, n_neighbors=3, p=2,
           weights=‘uniform‘)

neight.predict([[1.1]])
Out[6]: array([0])

      其中X是数据, y是标签, 使用predict()来预测新的点, 检查前3个点, 应该是[1],[2],[0]主要是标签0的数据点, 因此[1.1]被划分到标签0中    

    关于k的选取

      较大的k值, 由于邻域较大, 有可能和他就近的分类点不多, 所以可能结果出错

      较小的k值, 邻域较小, 有可能邻居是噪声点, 导致过拟合

      一般来说, 选择较小的k, 然后使用交叉验证选取最优的k值

  (2) 决策树

    一般是询问分类点的属性决定走向的分支, 不断查询获得最终的分类

    无房产单身年收入55k的决策效果

    

    创建决策树

      sklearn.tree.DecisionTree.Classifier()

      criterion: 选择属性的准则, gini(基尼系数), entropy(信息增益)

      max_features: 从多少个特征中选择最优特征, 默认是所有特征个数, 还可以是固定数目, 百分比等

    决策树的使用

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score
clf = DecisionTreeClassifier()
iris = load_iris()
cross_val_score(clf, iris.data, iris.target, cv=10)
Out[12]:
array([ 1.        ,  0.93333333,  1.        ,  0.93333333,  0.93333333,
        0.86666667,  0.93333333,  1.        ,  1.        ,  1.        ])

      cross_val_score是一个计算交叉验证值的函数

      iris.data作为数据集, iris.target作为目标结果

      cv=10表示使用10折交叉验证

      同样可以使用 clf.fit(X,y)来生成, clsf.predict(x)进行函数预测

  (3) 朴素贝叶斯

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

    

    sklearn实现了三个朴素贝叶斯分类器

    

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

    创建朴素贝叶斯

      sklearn.naive_bayes.GaussianNB()

      priors: 给定各个类别的先验概率, 空(按训练数据的实际情况进行统计), 给定先验概率(训练过程不能更改)

    朴素贝叶斯的使用

import numpy as np
X = np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])
Y = np.array([1,1,1,2,2,2])
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB(priors=None)
clf.fit(X,Y)
Out[18]: GaussianNB(priors=None)

clf.predict([[-0.8,-1]])
Out[19]: array([1])

    朴素贝叶斯是典型的生成学习方法, 由训练数据学习联合概率分布, 并求得后验概率分布

    朴素贝叶斯一般在小规模数据上的表现很好, 适合进行多分类任务

        

    

     

     

时间: 2024-10-10 07:24:04

Mooc机器学习-02监督学习的相关文章

机器学习笔记—-监督学习与无监督学习的异同

** 机器学习笔记--监督学习与无监督学习的异同 ** 有监督学习 在监督学习中,输入数据和输出数据存在某种关系,即在已经给定的数据集下,对应的正确输出结果,已经大约知道是什么样子了. 有监督学习常常被归类为 回归 和 分类 问题. 在回归问题中,我们希望得到连续值的输出预测值,即,使用某些连续函数来映射输入值. 在分类问题中,则希望获得的是离散的预测值.将输入值映射到离散的种类上. 无监督学习 无监督学习,对于问题最终的结果,只有很少或没有什么感知.从已有数据中抽取相应的结构,且不必知道数据变

机器学习 一 监督学习和无监督学习的区别

前话: 最近一直想学机器学习的东西,无奈自己的书太多但无法专心看一本,纯理论的东西看了感觉不记下来就忘记类,所以我想理论学习和实践一起. 所以最近想把机器学习实战这本书看完,并做好记录.加油.!~ 一:什么是监督学习? 监督学习(supervised learning):通过已有的训练样本(即已知数据以及其对应的输出)来训练,从而得到一个最优模型,再利用这个模型将所有新的数据样本映射为相应的输出结果,对输出结果进行简单的判断从而实现分类的目的,那么这个最优模型也就具有了对未知数据进行分类的能力.

机器学习有监督学习之--回归

一.引言 本材料参考Andrew Ng大神的机器学习课程 http://cs229.stanford.edu,以及斯坦福无监督学习UFLDL tutorial http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial 机器学习中的回归问题属于有监督学习的范畴.回归问题的目标是给定D维输入变量x,并且每一个输入矢量x都有对应的值y,要求对于新来的数据预测它对应的连续的目标值t.比如下面这个例子:假设我们有一个包含47个房子的面积和价格的数据集如

机器学习:监督学习和无监督学习

************************************** 注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的<机器学习>课程笔记.博主深感学过课程后,不进行总结非常easy遗忘.依据课程加上自己对不明确问题的补充遂有此系列博客. 本系列博客包含线性回归.逻辑回归.神经网络.机器学习的应用和系统设计.支持向量机.聚类.将维.异常检測.推荐系统及大规模机器学习等内容. ************************************** 机器学习定

Mooc机器学习-01机器学习

1 关于机器学习 机器学习是实现人工智能的手段, 其主要研究内容是如何利用数据或经验进行学习, 改善具体算法的性能 多领域交叉, 涉及概率论.统计学, 算法复杂度理论等多门学科 广泛应用于网络搜索.垃圾邮件过滤.推荐系统.广告投放.信用评价.欺诈检测.股票交易和医疗诊断等应用 机器学习的分类 监督学习 (Supervised Learning) 从给定的数据集中学习出一个函数, 当新的数据到来时, 可以根据这个函数预测结果, 训练集通常由人工标注 无监督学习 (Unsupervised Lear

机器学习--有监督学习和无监督学习

1.数据挖掘与机器学习的关系 数据挖掘和机器学习这两项技术的关系非常密切. 机器学习方法构成数据挖掘的核心,绝大多数数据挖掘技术都来自机器学习领域,数据挖掘又向机器学习提出新的要求和任务. 2.数据挖掘与机器学习的概念 数据挖掘就是在数据中寻找模式的过程,这个寻找过程必须是自动的或半自动的,并且数据总量应该是具有相当大的规模,从中发现的模式必须有意义并能产生一定的效益.通常数据挖掘需要分析数据库中的数据来解决问题,如:客户忠诚度分析.市场购物篮分析等等.这些海量数据不可能采用手工式进行处理,因此

python_机器学习_监督学习模型_决策树

1. 监督学习--分类 机器学习肿分类和预测算法的评估: a. 准确率 b.速度 c. 强壮行 d.可规模性 e. 可解释性 2. 什么是决策树/判定树(decision tree)? https://scikit-learn.org/stable/modules/tree.html 3. 熵(entropy)概念: 变量的不确定越大,熵也就越大. 4. 决策树归纳算法(ID3) 5. 其他算法及优缺点 6. 决策树的应用 生成后的决策树 逻辑代码: 但这段代码不是特别通用,而且有bug, 需要

机器学习笔记-监督学习之决策树

0机器学习中分类和预测算法的评估: 准确率 速度 健壮性 可规模性 可解释性 1决策树(判定树)的概念 决策树是一个类似于流程图的树结构(可以是二叉树或多叉树):其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布.树的最顶层是根结点.机器学习中分类方法中的一个重要算法. 2.熵(entropy)概念 信息和抽象如何度量?1948年,香农提出"信息熵"的概念. 一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,

机器学习之监督学习

根据数据类型的不同,对一个问题的建模有不同的方式.在机器学习或者人工智能领域,人们首先会考虑算法的学习方式.在机器学习领域,有几种主要的学习方式.将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果. 在监督式学习下,输入数据被称为"训练数据",每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中"垃圾邮件""非垃圾邮件",对手写数字识别中的"1"