如何用sklearn创建机器学习分类器?这里有一份上手指南

原作:Kasper Fredenslund 林鳞 编译自 Data Science Central 量子位 出品 | 公众号 QbitAI

分类器是数据挖掘中对样本进行分类的方法的统称,也是入坑机器学习的一项必备技能。这篇文章中,作者简要介绍了用Python中的机器学习工具scikit-learn(sklearn)创建机器学习分类器的步骤与注意事项。

读完这篇文章,你将学到:

  • 导入和转换.csv文件,开启sklearn之旅
  • 检查数据集并选择相关特征
  • 用sklearn训练不同的数据分类器
  • 分析结果,进一步改造模型

第一步:导入数据

找到合适的数据下载完成后,我们不难猜到,要做的第一件事肯定是加载并且检查数据的结构。这里我推荐大家使用Pandas

Pandas是一个Python库,里面包含一个叫DataFrame的数据处理界面。DataFrame本质上是一个具有行和列的excel表格,UI也相对做得朴素简洁。不同的是,我们需要也编程的方式进行所有数据操作。

除了excel表格外,Pandas还支持其他不同的格式,比如csv文件和HTML文件等。

第二步:选择特征

假设你想从一系列特征中预测一套房子的价格,我们应该选择哪些特征?

房子中灯和插座的数量重要吗?不重要。几乎没有买房者会将房子和插座的数量作为首要考虑因素。所以在这种情况下,这个特征就是不那么相关的特征。

在机器学习中,添加过多特征但不包含重要信息会导致模型不必要地变慢,并且会增加模型过度拟合的风险。

一般来说,你需要用尽可能少的特征,提供尽可能多的信息。

或者,我们还可以将相关特性(如房间数量、居住面积和窗户数量)与上面的示例合并成更高级别的主成分,再使用主成分分析(PCA)等技术分析。

通过绘图可视化这些特征之间的关系也是决定特征相关性的实用方法。下面,我们将使用plot.scatter()子方法绘制这个关系坐标轴。

第三步:准备训练数据

选择了想要用到的特征(PetalLengthCm和PetalWidthCm)后,还需要对它们进行一些处理。

一般来说,很多数据都是在Pandas中的DataFrame中编码的,但DataFrames并不适用于sklearn,所以我们需要提取特征和标签并将它们转换成numpy数组。

分割这些标签很简单,可以在一行中使用np.asarray()。

第四步:选择分类器

我建议在一开始大家都选择随机森林分类器。随机森林简单灵活,它能处理很多类型的数据,也不容易过拟合,所以我认为选择随机森林是个好起点。

不过,随机森林的一个明显缺点是它具有不确定性。因此每次训练时,都能得到不同的结果。

虽然随机森林是个好起点,但在实际操作中,我们经常会用多种分类器的组合看看能得到哪些好结果。

孰能生巧,渐渐地你会了解哪种算法适合哪些问题,对数学表达式做个原理剖析也能帮助你解决这个问题。

第五步:训练分类器

选择了分类器后,我们要去准备实现它了。

用sklearn实现分类器通常分三步走:导入、初始化和训练。

第六步:结果评估

即使分类的准确率可能高达98%,那么仍有2%情况会导致分类器犯错。那么,分类器到底是如何犯错的?

分类器的错误有两种,即假阳性和假阴性。假阳性指的是当某些东西为假时被认为是真的,假阴性相反。在机器学习中,我们经常用准确率(precision)和召回率(recall)评定精度。

这两个值均为小数或分数,在0和1之间,越高越好。

第七步:调整分类器

目前,我们的随机森林分类器只能使用默认的参数值。为了更好使用,我们可以改变了一些甚至所有的值。

min_samples_split是个有趣的参数。这个参数表示分割决策树的最小样本。

一般来说,模型捕捉的细节越少,过拟合的风险就越大。然而当将这个参数设置的过高时,你要注意在忽略细节的同时如何更好地记录趋势。

想用sklearn创建机器学习分类器?看完这篇文章后是不是有了更多的了解?如果想更详细地了解文章中每一步的具体操作,可以查看作者博客中的原文:

https://kasperfred.com/posts/creating-your-first-machine-learning-classification-model-in-sklearn

原文发布于微信公众号 - 量子位(QbitAI)

原文发表时间:2018-01-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

GitHub上大热的Deep Photo终于有TensorFlow版了!

王小新 编译整理 量子位 出品 | 公众号 QbitAI Prisma这个应用,你可能很熟悉。这是一个能将不同的绘画风格,迁移到照片中,形成不同艺术风格的图片。...

42060
来自专栏CreateAMind

运动信息向量的神经网络学习 code、ppt、视频ok

官方代码还未开放, http://visualdynamics.csail.mit.edu/

7920
来自专栏机器之心

教程 | 如何快速训练免费的文本生成神经网络

28850
来自专栏ATYUN订阅号

不用P图软件,TensorFlow pix2pix也能帮你打造出六块腹肌!

可视化结果是十分强大的。然而,在健身领域,要想清楚地看到未来的锻炼结果往往是很困难的。我们是否可以利用深度学习让人们更接近他们的个人健康目标,从而帮助他们设想未...

59940
来自专栏CVer

经典卷积神经网络(CNN)结构可视化工具

本文将介绍一种在线网络工具,可用于可视化各种经典的卷积神经网络结构。学习Caffe的同学,一定很熟悉Netscope。它就是用来可视化Caffe的prototx...

19100
来自专栏深度学习那些事儿

浅谈深度学习中超参数调整策略

深度学习中,设计模型以及保证模型的正确性是首要需要考虑的。当模型设置完成时,理论上模型不存在问题,实现效果也通过计算可以复现出来。一切准备就绪后,那么接下来需要...

22250
来自专栏CVer

资源 | GitHub超过2600星的TensorFlow教程,简洁清晰还不太难

最近,弗吉尼亚理工博士Amirsina Torfi在GitHub上贡献了一个新的教程,教程清晰简单,喜提2600颗星~

15920
来自专栏数据派THU

教你用Keras和CNN建立模型识别神奇宝贝!(附代码)

在今天博客的最后,你将会了解如何在你自己的数据库中建立、训练并评估一个卷积神经网络。

69310
来自专栏CreateAMind

运动信息向量的神经网络学习 code、ppt、视频

官方代码还未开放, http://visualdynamics.csail.mit.edu/

13630
来自专栏人工智能

从论文到测试:Facebook Detectron开源项目初探

机器之心专栏 作者:陈惠婵 从 RCNN 到 Faster RCNN,再到最近的 FPN 和获得 ICCV Best Paper 的 Mask RCNN,深度学...

386100

扫码关注云+社区

领取腾讯云代金券