机器学习主要用于解决分类、回归和聚类问题,分类属于监督学习算法,是指根据已有的数据和标签(分类的类别)进行学习,预测未知数据的标签。分类问题的目标是预测数据的类别标签(class label),可以把分类问题划分为二分类和多分类问题。二分类是指在两个类别中选择一个类别,在二分类问题中,其中一个类别称作正类(positive class),另一个类别称作负类(negative class),比如判断垃圾邮件。多分类问题是指从多个分类中选择一个类别。

一,分类的一般步骤

总体来说,数据分类是一个二阶段的过程,第一个阶段是学习阶段,用于训练分类模型,第二个阶段是预测阶段,使用模型预测新数据的类标签。此外,由于现实生活中的数据不是完美的,在开始训练模型之前,需要对数据进行预处理。在模型构建之后,还需要对模型进行评估和调参,选择最优的参数,达到最优的分类效果。

举个例子,下面的代码实现了一个最简单的knn分类器,没有对数据进行预处理,也没有对模型进行评估和调参。从代码中可以看出,knn分类模型是由两部分构成的:第一部分是拟合数据(fit),也就是训练模型,第二部分是预测数据(predict)。

from sklearn.neighbors import KNeighborsClassifierx_train = [[0], [1], [2], [3]]
y_train = [0, 0, 1, 1]#train the model
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(x_train,y_train)#predict a new data point
x_new=[[1.1]]
y_pred=knn.predict(x_new)
print('predict:{0}'.format(y_pred))

二,训练数据

训练数据是已标记的数据,由数据元组和其关联的类标签构成,训练集的一个数组元组可以表示为:[[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]],其类标签表示为:['a','b','c']。元组中的每个字段叫做数据的特征,或属性;类标号是指该数据元组的类别。

其实分类问题,可以看作一个公式 y=f(x),分类模型通过从训练集中学习来构造分类器,即从训练集中学习,获得y=f(x)这个公式(模型),对于新的数据a,f(a)就是预测的结果。

在机器学习中,数据元组也称为样本、数据点或对象。数据在应用到模型之前,需要对数据进行预处理,数据预处理主要是指特征选择、数值处理等。

三,分类的算法模型

sklearn中的分类估计器(Estimator)指的是分类的算法模型,用于对数据进行分类,sklearn的分类算法有:knn、贝叶斯、决策树等算法。

估计器主要由拟合(fit)和预测(predict)构成:

  • fit(x,y):拟合,传入数据以及标签用于训练模型,训练的时间跟算法的参数设置、数据集的大小以及数据本身的特点有关
  • predict(x):预测,用于对新数据进行预测,该方法接受一个数据点,输出该数据点的预测标签。通常使用该方法返回测试的结果,再将这个结果用于评估模型。

四,分类模型的评估

分类模型的评估由模型的正确率和预测的不确定度构成:

  • score(x,y):模型的正确率,用于对模型的正确率进行评分(范围0-1),计算公式是:count(预测正确的数据点)/总的数据点数量
  • predict_prob(x):每个类别的概率,表示预测的置信度。

在评估模型时,不能仅仅限于模型的正确率(score),由于在不同的问题下,评判模型优劣的的标准不限于简单的正确率,可能还包括召回率或者是查准率等其他的指标,特别是对于类别失衡的样本,准确率并不能很好的评估模型的优劣,因此在对模型进行评估时,不要轻易的被score的得分蒙蔽。

关于分类模型评估的详细信息,请阅读sklearn的官方文档:《3.3. Model evaluation: quantifying the quality of predictions》

参考文档:

1. Supervised learning

分类模型 第1篇:分类模型概述相关推荐

  1. NLP-分类模型:短文本分类概述【FastText、TextCNN、TextRNN、TextRCNN、DPCNN】

    一.概述​ 随着信息技术的发展,最稀缺的资源不再是信息本身,而是对信息的处理能力.且绝大多数信息表现为文本形式,如何在如此大量且复杂的文本信息中如何获取最有效的信息是信息处理的一大目标.文本分类可以帮 ...

  2. lda主题模型python实现篇_基于LDA主题模型的短文本分类

    VSM(向量空间模型)是信息检索领域最为经典的分析模型之一,采用VSM对短文本进行建模,即将每一篇短文本表示为向量的形式,用TF-TDF表示向量的值.给出一些符号定义:短文本集SD= {sd1,sd2 ...

  3. 软件测试常见概念(软件生命周期、软件开发模型、软件质量模型、软件缺陷管理、软件测试概述、软件测试分类、软件测试与软件开发、软件测试原则、黑盒测试方法、白盒测试方法、性能测试)

    文章目录 1. 软件概述 1.1 软件生命周期 1.2 软件开发模型 1.2.1 瀑布模型 1.2.2 快速原型模型 1.2.3 迭代模型(增量模型或演化模型) 1.2.4 螺旋模型 1.2.5 敏捷 ...

  4. 迁移学习训练分类模型实践第一篇

    迁移学习训练分类模型实践第一篇 前言 数据获取.预处理 构建模型 查看模型参数量和FLOPs 测试模型 前言 为了简洁,本文不包含任何训练过程,仅介绍处理数据.构建模型.使用随机初始化权重推断: 关于 ...

  5. 脑电EEG代码开源分享 【6. 分类模型-深度学习篇】

    往期文章 希望了解更多的道友点这里 0. 分享[脑机接口 + 人工智能]的学习之路 1.1 . 脑电EEG代码开源分享 [1.前置准备-静息态篇] 1.2 . 脑电EEG代码开源分享 [1.前置准备- ...

  6. 文本分类实战(三)—— charCNN模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  7. 机器学习分类_机器学习之简单分类模型

    本文主要探讨了机器学习算法中一些比较容易理解的分类算法,包括二次判别分析QDA,线性判别分析LDA,朴素贝叶斯Naive Bayes,以及逻辑回归Logistic Regression,还会给出在ir ...

  8. 文本分类模型_【文本分类】几个可作为Baseline的模型

    点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要9分钟 跟随小博主,每天进步一丢丢 来自:AINLP 作者:老宋的茶书会 知乎专栏:NLP与深度学习 研究方向:自然语言处理 前言 最近,从Te ...

  9. 机器学习实战代码注释svm_使用经典机器学习模型动手进行毒性分类并最大程度地减少注释的意外偏见...

    机器学习实战代码注释svm In this blog, I will try to explain a Toxicity polarity problem solution implementatio ...

最新文章

  1. 深入浅出ShellExecute(总结)
  2. spark之12:集群模式概述
  3. Red Hat Enterprise 5 server 上安装 memcached 的问题记录
  4. JAVA第六章第6题,java第六章例题源代码
  5. linux运行隐藏脚本,linux 下隐藏进程的一种方法及遇到的坑
  6. QCon上海2015精彩回顾和总结
  7. 按头安利 好看又实用的中文繁体字体素材看这里
  8. qss样式表之QComboBox
  9. 爬虫代理哪家强?十大付费代理详细对比评测出炉!
  10. netware php_Linux中NetWare客户端简易安装说明(转)
  11. 转行it学python_转行IT行业为什么要学习Python开发
  12. Python编程——实现屏幕广告语的滚动
  13. python数据预处理 样本分布不均(过采样和欠采样)
  14. Matlab小课堂1
  15. ubuntu系统外连接两个显示器设置
  16. oracle 加号和不加号,Oracle中连接与加号(+)的使用
  17. html迷你音乐播放器,javascript开发迷你音乐播放器
  18. java接入顺丰快递api(有可运行demo)(包括下单、路由查询、路由推送、查询订单状态、取消订单)
  19. 上岸算法 -北美求职套路全解析
  20. 金立手机官网无法访问 金立破产已进入倒计时

热门文章

  1. 创业一年来经历的技术风雨
  2. JavaEE进阶 - Spring事务和事务传播机制 - 细节狂魔
  3. 虚拟化、大数据、云计算、物联网、移动互联网以及传统互联网之间的关系
  4. 有四个线程1、2、3、4,线程1的功能就是输出1,线程2的功能就是输出2,以此类推......... 现在有四个文件A B C D,初始都为空。现要让四个文件呈如下格式:A:1 2 3 4 1 2..
  5. 视频剪辑必备,7免费个视频素材库,马住。
  6. 【NLP】第3章 微调 BERT 模型
  7. 复习_for循环嵌套 及 流程图梳理
  8. 简单理解Focal Loss
  9. 使用FreeCDN提升网站的访问速度
  10. android eclipse关联源码,在源码中编译自己的 Android project(eclipse编译的工程加到源码中)...