雷克大会(2017机器人与人工智能大会)即将于2017年6月21日在北京新云南皇冠假日酒店召开,活动报名渠道全面开启,报名参会请点击活动行链接 「机器人圈」导览:如果你对机器学习感兴趣,你一定不要错过此文,作者以一个生动的例子,详细阐述了Sklearn在创建分类器中的作用。文章编译自kasperfred.com,作者是Kasper Fredenslund,文章略长,时长大约15分钟,请耐心阅读。 如果你热爱机器学习,但是你又不知道该从何入手,也许你已经阅读了一些理论,掌握了一定的基础知识,可是你并不知道该如何将你学到的理论付诸实践。 本教程的出发点就是助你“破冰”,引导你完成从导入和分析数据集到实施和训练几种不同的知名分类算法,并评估其性能的完整过程。 我将使用最小量的离散数学,旨在使用直觉来表达细节,使用生动具体的例子而不是密集的数学公式来传达思想。如果你想知道为什么,可以查看详情。 通读文章之后你就会明白: ·使用sklearn导入并转换.csv文件中的数据 ·检查数据集并选择相关特征 ·使用sklearn在数据中训练不同的分类器 ·分析结果,旨在改善你的模型 我们将使用你可以从Kaggle下载的鸢尾花数据集(Iris flower dataset),根据其萼片和花瓣特征对花种进行分类。 也许你没有听说过Kaggle,那我来介绍一下,Kaggle拥有大量酷炫的数据集,是数据科学家分享他们研究成果的地方,对于初学者来说,这可是学习时可能用到的宝贵资源。 鸢尾花数据集相当小(仅由150个均匀分布的样本组成),而且表现良好,从而使其成为该项目的理想选择。 你可能会问,为什么使用这个毫无意义的数据集,而放弃其他那些有趣的数据集?原因是当我们学习数据分析时,使用简单,表现良好的数据可以减少认知负荷,使我们能够更好地理解我们正在使用的数据,从而使调试变得更容易。 当学习机器学习时,数据是没有如何分析数据那么重要的。 导入数据 一旦我们下载了数据,我们首先要做的就是加载它并检查其结构。为此,我们将使用pandas。 Pandas是一个python库,为我们提供了一个称为DataFrame的数据处理通用接口。DataFrames本质上是具有行和列的excel电子表格,但是它没有UI excel那么花哨。相反,我们以编程方式进行所有数据操作。 除此之外,Pandas还具有附加的优点,从而使其可以以超级简单的方式导入数据,因为它支持许多不同的格式,包括excel电子表格、csv文件,甚至HTML文档。 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns plt.style.use('ggplot') # make plots look better导入我们要使用的库之后,我们现在可以使用pandas中的read_csv()方法来读取数据文件。 df = pd.read_csv("Iris.csv")Pandas自动地将第一行解释为列标题。如果你的数据集没有指定第一行中的列标题,则可以将参数header=None传递给read_csv()函数,以将整个文档解释为数据。或者,你还可以传递列名称作为header参数。 要确认pandas已经正确读取csv文件,我们可以调用df.head()来显示前五行。 print (df.head()) # Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species # 0 1 5.1 3.5 1.4 0.2 Iris-setosa # 1 2 4.9 3.0 1.4 0.2 Iris-setosa # 2 3 4.7 3.2 1.3 0.2 Iris-setosa # 3 4 4.6 3.1 1.5 0.2 Iris-setosa # 4 5 5.0 3.6 1.4 0.2 Iris-setosa我们可以看到,直播,pandas确实正确地导入了数据。Pandas还有一个整洁的函数,df.describe()来计算每一列的描述性统计,如下所示: print (df.describe()) # Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm # count 150.000000 150.000000 150.000000 150.000000 150.000000 # mean 75.500000 5.843333 3.054000 3.758667 1.198667 # std 43.445368 0.828066 0.433594 1.764420 0.763161 # min 1.000000 4.300000 2.000000 1.000000 0.100000 # 25% 38.250000 5.100000 2.800000 1.600000 0.300000 # 50% 75.500000 5.800000 3.000000 4.350000 1.300000 # 75% 112.750000 6.400000 3.300000 5.100000 1.800000 # max 150.000000 7.900000 4.400000 6.900000 2.500000由于我们可以重新确认没有缺失的值,我们准备开始分析数据,目的是选择最相关的功能。 特征选择 在熟悉数据集之后,现在是时候选择我们将要用于我们的机器学习模型的特征了。 其实,你有足够的理由来询问为什么要进行特征选择?我们不能只是抛出我们在模型中的所有数据,并且让它弄清楚什么是相关的吗? 为了回答这个问题,了解“特征与信息是不一样的”这一概念就变得很重要了。 假设你想从一组特征中预测房子的价格。我们可以问问自己,知道房子里有多少个灯具和电源插座真的很重要吗?人们买房子时有什么想法吗?它是否添加了任何信息,还是只是为了数据而考虑数据? (责任编辑:本港台直播) |