入行AI,你需要一本Python机器学习入门

栏目: Python · 发布时间: 5年前

内容简介:今天小编推荐这本《Python机器学习》教你快速入门。01

今天小编推荐这本《Python机器学习》教你快速入门。

入行AI,你需要一本 <a href='https://www.codercto.com/topics/20097.html'>Python</a> 机器学习入门

01

什么是机器学习?

从出生的那天起,我们就一直在学习中度过。随着逐渐的成长,开始学习如何走路;通过倾听周围人的谈话,学习并尝试模仿;通过学习不同单词的意思,使得在需要时懂得该如何进行表达;同时也开始区分事情的好坏。例如,在第一次靠近火源时,会因灼热而后退,从而明白要与火源保持一定的距离。

那么,现在思考一下计算机的工作原理。计算机可以在1s内遵循人类的指示处理数百万条指令,并返回结果;它可以执行人类描述的任务,但是却不能自行决定。

而机器学习此时就可以发挥作用了。如果给予计算机像人类一样的思考能力,那会发生什么呢?可以用计算机能理解的方式给出每一天的任务令其进行计算,还可以建立一些模型来帮助计算机在将来采取行动。

人类从经验中学习知识,计算机则遵循指令执行任务。然而,其实还可以直接向计算机提供经验让其学习并为行动做准备。目前我们是以结构化的方式定义经验。因此,我们将计算机从数据(经验)中进行学习的过程称为机器学习(Machine Learning)。

以买香蕉为例。你的母亲需要你去市场上买一些香蕉,同时她告诉你鲜黄色的香蕉很好吃。你到一个水果商那里,开始按照母亲的建议挑选香蕉。你买了20根香蕉后就回家了,然而回家后你注意到有些香蕉的味道并不像其他的那样好。事实上,有5根香蕉是坏的。你逐个拿起香蕉并开始作出假设。 20根香蕉中有12根大香蕉和8根小香蕉。这8根小香蕉都很美味,但是大香蕉就不一样了,在12根大香蕉中有5根味道不如预期。

你已经掌握了挑选香蕉的知识。第二天,当你到达市场时,注意到有个水果商在打折出售香蕉,这些香蕉和昨天的不同,它们的皮带有一些绿色。从这里买完香蕉回到家后,根据之前的经验将每一根香蕉分为好与坏,会发现大的绿色香蕉很好吃,但是小的绿色香蕉的味道不如其他的好。这样,你就学会了新规则。

你开始将自己看作是香蕉专家。有一天,你不得不去另一个城市参加表亲的婚礼。现在你惊讶地发现这里所有的香蕉都很小,但是味道却都很好。在这里你了解到来自这个区域的香蕉是畅销商品。

现在你确实已经是一名专家了。但如果你的姐姐很长时间没有回家了,并且她喜欢石榴而讨厌香蕉。你要怎么办呢?为了找到美味的石榴,你需要重新开始你的学习。

现在这个任务就可以由机器学习负责指引计算机完成了。可以使用数据点的形式向计算机提供知识。数据点的属性称为特征(Feature),这里的特征是香蕉的大小(小、中、大)、颜色、产地等。输出(Output)就是味道(好或者坏)。将这些数据输入到机器学习程序中,就可以让计算机学习如何区分香蕉的好与坏。

机器学习算法是一种根据经验来给予你决策能力的智能算法。

02

为什么选择Python

Python在数据科学家中是非常受欢迎的编程语言。

  • 第一,它免费且易学,不必为了小任务而浪费大量注意力;

  • 第二,它是面向对象的语言,这也是其被大型开发者社区支持的原因;第三,巨大的开源库支持。 Python具有相当数量的开源库,能够更迅速地实现数据科学和机器学习解决方案,而无须从头开始编写每一个算法。像Pandas、 scikit-learn、 SciPy、 NumPy、 Keras这样的库对于快速实现机器学习算法非常有用。

首先,通过一个例子了解如何使用编程语言来解决现实世界的问题。

假设举办一个聚会。你为每个进入聚会的人分配一个唯一的1~100之间的号码。现在聚会结束了,你宣布了一个消息。

“会从1~200之间获取一个随机数。如果有两个人的号码之和与这个数字相等,就会奖励这两个人。”

现在了解到,已经向x个人分配了号码。如何确定能否给其中两个人奖励呢?

可以尝试使用Python来解决这个问题。首先,从列表中获取输入数据。

1numberList = list([43,23,1,67,54,2,34,56,23,65,12,9,87,4,33])

现在选择一个随机数并将其存储在一个变量中。

1sumSelector = raw_input()

为了解决这个问题,必须先对数据进行排序。在Python列表中 排序 很简单,可以通过sort函数来完成。

1numberList = numberList.sort()

通过上述语句,将排序后的数字赋值给变量。现在使用两个指针:一个指向开始处(前指针);另一个指向结束处(后指针)。检查两指针所指变量的和。如果和小于给定值(意味着当前的总和小于所需的总和),前指针向前移动一步并再次检查;如果和大于给定值(意味着当前的总和大于所需的总和),将后指针向后移动一步并再次检查。无论在任何位置,如果当前的总和等于要求的总和,便可以说,存在两个人的数值之和与给定的数值相同,需要给予奖励;如果两个指针相交并且仍然没有达到所需的总和,则可以声称并不存在两个人的数值之和与给定的数值相等。

以下是完整的解决方案

 1def isPrizeGiven(numberList,sumSelector):
 2
 3sumOfTwo = sumSelector
 4
 5   i=0
 6
 7   j = len(numberList) -1
 8
 9   if(i>=j):
10
11       return False
12
13   while(i<=j):
14
15       currentSum = numberList[i]+numberList[j]
16
17       print(i,j,currentSum)
18
19       if(currentSum==sumOfTwo):
20
21           return True
22
23       if(currentSum>sumOfTwo):
24
25           j=j-1
26
27       else:
28
29           i=i+1
30
31   return False

为获得所需答案,必须向函数传递排序列表和给定的数值(即两数值的期望和)。

1if (isPrizeGiven(numberList,sumSelector):
2   print("No Escape. Give Prize to Everyone")
3else:
4   print("You Saved Yourself!!")

即使现在不能理解此代码,也不要担心。接下来我们还会对这段代码进行解析,并介绍程序设计语言的基本原理。

03

机器学习过程

机器学习不仅仅是一种简单的算法,还可以将其放在其他任何地方以获得奇妙的结果。机器学习是一个从定义数据开始,最终获得一定准确率的模型的过程。

1.问题定义

机器学习的过程从定义一个商业问题开始。机器学习的需求是什么?这个任务真的需要高级的预测算法来解决吗?

问题定义是非常重要的,它提供了更正式地思考解决方案的方向。它基本上处理两个问题。

A.问题是什么?

这个问题涵盖了问题的定义,并使问题变得更加正式。假设我们想要确认图像中是否包含人。

现在定义这个任务,将其分为任务(T)、经验(E)和性能(P)。

  • 任务(T):根据图像中是否包含人对图像进行分类。

  • 经验(E):带有是否包含人的标签的图像。

  • 性能(P):错误率。在所有的分类图像中,错误预测的百分比是多少。错误率越低,准确率越高。

B.为什么这个问题需要解决方案?

这个问题更侧重于商业方面,它包括解决问题的动机和益处。

假如你是一个研究者,希望解决某个问题并发表论文,使之成为他人解决问题的基准,这可能就是你的动机。

关于你的问题其他需要确定的是,在没有安全措施的情况下,夜间在银行的自动取款机上是否有人类活动(假设所要解决的问题与自动取款机的安全有关)。

还需要定义可以使用此解决方案的场景。这是一个通用型的解决方案,还是为特定任务(ATM传感器中的检测人员)所设计的呢?解决方案的失效日期是什么时候(它是终身的还是在特定的期限内)?

2.数据采集

在定义问题之后,开始进行数据采集。收集数据有多种不同的方式,如果想把评论与评级联系起来,就要从抓取网站开始。为了分析Twitter数据并将其与情感联系起来,就要从Twitter提供的API入手,收集标签数据或者与某个公司相关联的数据。市场调查人员通过创建不同的调查表格,并将其放在网站上来收集数据。对于像Amazon、 Facebook这样拥有众多用户的公司,其数据是巨大的,而根据问题的不同,还需要收集数据和标签。假设要建立一个新闻分类器,将新闻划分为体育新闻、市场新闻和政治新闻。因此,收集到的每一条新闻都需要一个与之相关的标签,通过这些数据可以构造机器学习的分类器。

正确的数据是解决机器学习问题的关键。即使是基本算法,高质量的数据也会产生令人满意的结果。

3.数据准备

在采集数据之后,需要专注于数据准备。收集的数据要准备成机器学习算法所能使用的格式。算法不是魔术表演,数据必须以正确的形式输入到机器学习算法中才能获得结果。根据算法库的不同,算法可以适应不同类型的输入格式。

数据准备是从数据选择开始的,并不是收集到的每个数据都对问题的解决有帮助。假设你正在分析服务器上的日志,在每个用户活动之后会生成许多与系统相关的信息,如果正在预测的是营销活动的市场反应,那么这个日志可能就不起作用了。所以,基于所要解决的问题,应将无关数据从之后的操作中删除。

在更高层次的基础上识别数据后,需要对数据进行转换或预处理,使之能更好地应用于机器学习算法。以下是数据预处理过程中的一些过程。

  • 清理(Cleaning):数据可能含有需要移除的错误。假设数据中缺少某些属性的数值,由于目前并没有适合的算法能够处理值缺失问题,因此可以用一些值(数值的均值/中值和分类值的默认值)代替缺失值。如果数据包含敏感信息,如电子邮件的ID和用户的联系号码,则需要在与团队共享数据之前删除数据中的敏感信息。

  • 格式化(Formatting):算法需要预定义格式的数据。基于Python机器学习库的要求,采用Python列表的形式表示数据。一些实时的机器学习库使用的是JSON格式的数据,而Excel文件使用CSV格式的数据。根据使用 工具 或技术的不同,需要对数据进行格式化,使其满足使用工具或技术对数据格式的要求。

  • 采样(Sampling):并非所有的数据都是有用的。一些在模型中存储数据的算法很难实时生成预测,可以从数据中删除类似的实例。如果是分类模型,可以按照标签进行等比例采样。

  • 分解(Decomposition):分解会使得一些特征更加有用。以数据库中的日期属性为例,可以把日期分解成日、月、年,还可以创建诸如周末或工作日、季度、闰年或日期等特征,使其在预测中更有用。

  • 缩放(Scaling):不同的属性遵循不同的单位和值。假设通常以厘米为单位测量一个人的身高,而对于一些数据,可能是以英寸为单位。所以,需要先将其换算成厘米。另外,一个属性的高/低值可能会影响到其他属性。例如有3个特征,如人的年龄、体重和年收入,现在希望根据它们预测医疗保险计划。如果直接使用这些数据,模型将高度依赖于工资,因为工资的数值远远高于其他属性的值。所以,需要对每个属性的值进行缩放,调整为[0,1]或[-1,1 ]。

这个过程也称为 特征处理(Feature Processing) ,它包括特征选择、预处理以及将其转换为对于机器学习算法有益处的格式。

4.数据分割——训练数据和测试数据

机器学习算法的目标是对未知的新数据进行预测。我们使用训练数据来建立模型。在训练数据时,算法将逐渐减少训练的误差。但是,不能将训练数据的准确率(Accuracy)视为广义的准确率,其原因在于该算法可能会记住实例并对其进行相应的分类。所以,为了评估生成的模型,需要将数据分为训练数据和测试数据。利用训练数据进行算法训练,利用测试数据来计算生成模型的最终准确率。测试数据并不参与算法训练。

一般将60%~80%的数据作为训练数据,剩余的部分作为测试数据。所以,在测试数据中获得最好结果的模型可以作为目标模型。

5.算法选择

我们从一组机器学习算法开始,并将训练数据的特征应用到算法中,算法选择依赖于问题的定义。如果从电子邮件中收集数据,并将邮件分为垃圾邮件或非垃圾邮件,则这时所需要的算法是在输入变量后输出相应的结果(垃圾邮件或者非垃圾邮件),这类算法称为 分类(Classification) 算法(如决策树、朴素贝叶斯、神经网络等)。如果想预测某一任意连续变量(如预测即将到来的季度销售量),则使用 回归(Regression) 算法(如线性回归、核回归等)。如果所解决的问题并没有相关的任何输出或反应,则可以使用 聚类(Clustering) 算法,根据它们的特性对其分组。每种类别中都有大量的算法,我们将在后续的章节中给出示例。

6.算法训练

在选择算法之后,开始训练模型。训练模型是在训练数据集上进行的,大多数算法的权值/参数在训练开始时都是随机分配的,并在每次迭代中加以改进。算法训练过程中,在训练数据集上多次运行以产生结果,如图1.1所示。例如,在线性回归的情况下,算法在开始时随机放置分离线,在每次迭代之后不断地改进自身(也就是移动分离线)。

入行AI,你需要一本Python机器学习入门

图1.1

7.测试数据评估

利用训练数据生成最佳算法后,在测试数据集上对算法的性能进行评估。测试数据集并不能参与算法训练,因此测试数据并不能影响算法的决策。

8.参数调整

在选择正确的算法后,可以尝试对其进行改进以获得更好的性能。每个算法都有不同的参数设置方式,可以对其进行配置从而更改算法性能,这称为 参数调整(Parameter Tuning) 。例如可以改变算法学习的速率(学习率)来提高算法性能,这些参数称为 超参数(Hyper Parameter) 。对于机器学习来说,参数调整更像是一门艺术。

9.模型使用

上述所有步骤完成之后,就可以获得在训练集上训练生成,并在测试集上完成评估的模型。现在可以使用这个模型来预测新数据的值。对于生产环境,可以将模型部署到服务器,并通过API接口使用模型的预测功能。当然,这个模型并不总一样的,每当获得新数据时,都要将上面所列出的步骤重新进行一遍,以改进模型的性能。

因此,在机器学习中,从问题开始,最后以一个解决问题的预测算法结束。

通过下面的问题,我们开始尝试了解机器学习算法是如何解决问题的。

假设你需要购买一栋房子,现在开始查看市场上正在出售的房屋,并据此核对你的预算。你对将要购买的房子有多个要求,首先就是房子的面积。

在图1.2的情景中,你先考查了一栋600平方英尺(约56m2)的房子,价格是220 000英镑(约1 942 578元)。这个房子的确很不错,但是它并不满足你的要求——你将和你的家人一同居住,而这个房子面积太小,并不能让每个人都住得舒适。所以,你继续研究并找到一栋1700平方英尺(约158m2)的房子,价格是730 000英镑(约6 445 827元)。这个房子满足你的要求,但是它的价格有些超出你现在的预算——你的预算与小面积房子的价格相比要高一些,但也不像大房子的价格那么高。然而,只有当你与业主或代理人见面并提交详细资料后,才能得到房子的实际价格。但是你并不想与每一个业主或者代理人见面。

入行AI,你需要一本Python机器学习入门

图1.2

在二维(2D)平面上分析一下你所考查的两个属性,如图1.3所示。

入行AI,你需要一本Python机器学习入门

图1.3

现在,你在城市里闲逛,找到一栋面积在这两栋房子之间的房子。

这栋新房子的面积大约有1 250平方英尺(约116m2),但你还不知道价格。所以,你想 预测房子的价格 ,看其是否符合预算和要求。

将新房子的信息放在同一个二维平面上,试着预测这个房子的价格,如图1.4所示。

入行AI,你需要一本Python机器学习入门

图1.4

为了预测房屋的价格,将设置一条符合已知结果(即房屋价格和房屋面积)的直线,这里得到了如图1.5所示的一条直线。

入行AI,你需要一本Python机器学习入门

图1.5

通过这条直线,可以预测出1250平方英尺(约116m2)的房子的价格是475 000英镑(约4 194 202.5元)。所以,我们得到了一条根据房子面积来预测房子价格的直线,这种技术称为 线性回归(Linear Regression) 。可以把这种技术理解为在现有数据点上寻找最佳直线。

比如,计算3个点到直线距离之和的最小值。首先,随机选择一条线,直线上方有A、B、C共3个点,如图1.6所示。

入行AI,你需要一本Python机器学习入门

图1.6

然后,计算每个点到直线的距离,如图1.7所示。

入行AI,你需要一本Python机器学习入门

图1.7

可以得到总距离是a+b+c。现在,移动直线的位置(向下移动)并再次计算点到直线的距离,如图1.8所示。

入行AI,你需要一本Python机器学习入门

图1.8

改变了线的位置,但总距离a+b+c增加了。显然,这不是我们想要的结果。让我们将直线朝另一个方向(向上移动)移动,如图1.9所示。

入行AI,你需要一本Python机器学习入门

图1.9

这条直线(见图1.9)比第一条直线(见图1.7)要更符合要求。现在移动这条线,并试着重复进行同样的步骤。最终通过这种方式结束直线的选择,从而确定直线位置,如图1.10所示。

入行AI,你需要一本Python机器学习入门

图1.10

对于给定的3个点(A、 B、 C)来说,图1.10所示的直线是最符合条件的。在这里取3个点到直线的非负距离,找到这条线的方法称为梯度下降法。

有时在所有数据点上拟合一条直线并没有多大意义。现在思考图1.11所示的点集。

入行AI,你需要一本Python机器学习入门

图1.11

如果尝试使用线性回归技术来拟合一条直线,它看起来如图1.12所示。

入行AI,你需要一本Python机器学习入门

图1.12

很明显,这条线不适合用来预测。相反,可以用图1.13所示的曲线来对数据建模。

入行AI,你需要一本Python机器学习入门

图1.13

这就是所谓的 多项式回归(Polynomial Regression) —— 因为其参数是多项式。

再来看另一个例子,例如有一个售鞋网站,其中包含来自不同公司的各种鞋子,可以通过其网上商店订购鞋子。鞋子成功交付后,公司将发送电子邮件获取顾客的反馈。顾客在评论区内留言,其中有些评论是正面的,有些评论则是负面的。

该公司每天销售数千双鞋,需要跟踪每一个评论并采取相应的行动。如果顾客评论说鞋子质量不佳,则需向生产商询问有关产品的质量问题;有些鞋子反响很好,则最好将它们放在网站的首页。

为了解决这个问题,首先需要从一组顾客评论开始,将每个评论分为负面评论或者正面评论,下面给出部分示例。

正面评论

A1:质量不错!我很喜欢这双鞋子。

A2:非常好的产品。

A3:给我爸爸买的,他很喜欢。

负面评论

B1:材质不好,不适合。

B2:很不喜欢这个产品,包装也很不好。

B3:千万不要买这个产品。

分析示例中的正面评论和负面评论,会发现,如果评论中包含“喜欢”这个词,那么它更可能是一个正面评论。因此,创建这条规则并检查所有数据集,会发现60%的正面评论中包含“喜欢”这个词;另一方面,只有10%的负面评论中包含“喜欢”这个词。

同样,其他词语所占的比例如表1.1所示。

表1.1

正面评论 负面评论
喜欢 60% 10%
很好 45% 7%
36% 8%
4% 62%
很差 2% 23%

因此,对于将来可能获得的评论,根据其所包含的词的复合概率,可以判定该评论是正面评论还是负面评论,这就是 朴素贝叶斯分类器(Naïve Bayes Classifier)

再列举一个向不同的人推荐杂志的例子。假设已经记录了用户的年龄、性别、位置以及他们阅读的杂志类型,表1.2所列为记录的数据。

表1.2

年龄 性别 位置 杂志
21 美国 运动
15 美国 儿童
37 印度 政治
42 英国 商业
32 美国 运动
14 印度 儿童
53 印度 政治

现在,通过对这些数据进行观察,可以发现小于15岁的人喜欢阅读儿童杂志。根据其制作一个节点和它的决策,如图1.14所示。每个圆节点表示决策节点,图的边缘(箭头)则表示相应的决策,每个矩形节点表示通过图分支之后采取的决策。

入行AI,你需要一本Python机器学习入门

图1.14

因此,可以说每个年龄小于或等于15岁的人都有可能阅读儿童杂志。现在再来处理大于15岁的读者的分支。

现在,第二个观察特征是男性,他们喜欢阅读政治杂志。为其创建相同的决策节点和分支,如图1.15所示。

入行AI,你需要一本Python机器学习入门

图1.15

接下来,需要看一下年龄在15岁以上的女性的选择。还有一个信息可以利用——地区。因此,可以说,来自美国的女性喜欢阅读体育杂志,而其他地区的女性则喜欢商业杂志。在这里形成的节点如图1.16所示。

入行AI,你需要一本Python机器学习入门

图1.16

正确地对每个数据点进行分类,这个过程中形成了决策树。可能存在多种创建决策树的方法。根据现有的数据,这些方法可以做出正确的预测。

图1.17所示的这棵树对数据进行了准确的分类。

入行AI,你需要一本Python机器学习入门

图1.17

再来举另一个例子,有几个人每年申请贷款,银行根据他们的收入和贷款额从而决定是否对其提供贷款,目标是向那些在规定时间内偿还债务,且没有任何违约的人提供贷款。

如果一个人月收入是20 000美元,他申请了100 000美元的贷款,银行根据他的收入来源可以批准贷款;如果一个人月收入是3 000美元,他申请了600 000美元的贷款,则银行可能会早早地拒绝他。

因此,银行基于以往违约者的历史创建了一个数据,如图1.18所示。红点表示银行拒绝受理的申请,绿点表示银行批准的申请。横坐标是请求的贷款额度,纵坐标是月收入。

入行AI,你需要一本Python机器学习入门

图1.18

现在,一个月收入10 000美元的人想要贷款300 000美元,银行是否会给予批准呢?可以通过一条直线来分割数据,如图1.19所示。

入行AI,你需要一本Python机器学习入门

图1.19

根据上面的直线,可以预测银行将同意月薪20 000美元的人申请300 000美元的贷款申请。

现在,已经有一条合适的直线来分割现有的数据点。我们使用的算法(梯度下降法)与在线性回归过程中使用的算法相同。在这里,目标变量是类别而不是在线性回归情况下连续的预测值,这种技术称为 逻辑回归(Logistics Regression)

现在,银行来了一位新的经理,他要检查所有记录,他认为银行批准或拒绝贷款申请的参数是荒谬的,一些像10 000美元或20 000美元的贷款申请并没有风险,银行可以同意这部分贷款申请。所以,他改变了规则和数据,如图1.20所示。

入行AI,你需要一本Python机器学习入门

图1.20

显然,仅仅使用一条直线并不能将红点和绿点分开,既然这样,那使用两条直线呢?如图1.21所示。

入行AI,你需要一本Python机器学习入门

图1.21

与一条直线相比,使用两条直线可以将红点和绿点分开。这种技术被称为 神经网络(Neural Network) 。神经网络是基于大脑中的神经元的概念提出的。大脑中的神经元收集信息并将其传递给其他神经元。简单来说,就是基于先前神经元的输入,下一个神经元接收要求并决定输出,它还将信息传递给其他神经元。最后,通过处理不同的神经元,大脑做出决定。

这个概念可以用下面的模型(见图1.22)来理解。在这个模型中,两个神经元通过使用不同的假设建立模型,并且将它们的发现发送给另一个神经元。根据收集到的信息,输出神经元做出决策。

入行AI,你需要一本Python机器学习入门

图1.22

在处理数据时,对于一条分割数据点的直线,可能有不同的选择。如图1.23所示的两个例子。

入行AI,你需要一本Python机器学习入门

图1.23

与直线1相比,直线2的边距更大,其在分割数据方面似乎更好,如图1.24所示。

入行AI,你需要一本Python机器学习入门

图1.24

现在我们要寻找最佳分割路线,而梯度下降并不能解决这个问题,需要线性优化才能实现。这种技术被称为最大间隔分类器或 支持向量机(Support Vector Machine, SVM)

在现实世界中,数据并不能完全分割开。它可能会如图1.25所示的那样。

入行AI,你需要一本Python机器学习入门

图1.25

所以,不能通过一条直线就把红点和绿点分开。但是如果通过一个平面来区分红点和绿点,就可以用一个分类器对它们进行分类。创建一个新的维度并用这个平面来分割红点和绿点,如图1.26所示。

入行AI,你需要一本Python机器学习入门

图1.26

现在使用一个新的维度将红点和绿点分开。这种技术被称为 核函数(Kernel Trick)

真实的数据非常复杂,而且有很多维度。带有支持向量机分类器的核函数可以用来解决这些复杂的问题。

现在来看另一个问题。如图1.27所示,有一家杂货店A2A。他们提供电话送货服务,每当接到电话时,他们就会将地址发送给派送员,派送员会赶赴送货地点并交付商品。他们设法将办公室设在城市的中心,以便为越来越多的人及时提供服务。

入行AI,你需要一本Python机器学习入门

图1.27

这里的点代表A2A的服务需求。现在他们意识到,这种一个配送中心处理所有的需求的做法并不明智。于是,他们决定在城市中开设4个配送中心,依照不同地区来接受需求并提供服务。

因此,为了解决这个问题,首先可以随机地添加4个配送中心并给予其商品派送需求,如图1.28所示。

入行AI,你需要一本Python机器学习入门

图1.28

显然,这不是配送中心的最佳分配位置。接下来,将每个点移动到分类点的中心。然后,将所有点分类到最近的配送中心,并将配送中心的位置移动到之前的分类中心。经过多次迭代,将得到图1.29所示的分配位置。

入行AI,你需要一本Python机器学习入门

图1.29

因此,每个点的分配都是基于点到中心的距离。这种技术称为 K-均值聚类(K-Means Clustering)

也可以使用另一种方法进行聚类。把所有的点看作是独立的集群,而不是首先将它们分组到集群中再对其进行重新分配。然后,将两个最近的点进行分组,形成一个簇。一直这样操作,直到出现较大的距离或者形成最小数量的簇。这种技术称为 层聚类(Hierarchical Clustering)

本文摘自《Python机器学习》

入行AI,你需要一本Python机器学习入门

《Python机器学习》

作者:[印]阿布舍克·维贾亚瓦吉亚

ISBN 978-7-115-50135-6/

入行AI,你需要一本Python机器学习入门

扫描二维码,一键购买

Python机器学习实用教程,Python 3 程序员 晋级必备图书,本书提供配套资源可供读者下载。

内容提要 

《Python机器学习》通过解释数学原理和展示编程示例对机器学习进行了系统、全面的解析。《Python机器学习》共分为12章,内容涵盖了机器学习以及Python语言的基础知识、特征工程的概念与操作技术、数据可视化技术的实现、监督学习及无监督学习算法、文本分析、神经网络和深度学习、推荐系统的构建方法以及预测处理时间序列的方法等。阅读本书能够加深读者对机器学习的认识和理解,从而达到理论与实践相结合、学以致用的目的。 


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms and Theory of Computation Handbook

Algorithms and Theory of Computation Handbook

Mikhail J. Atallah (Editor) / CRC-Press / 1998-09-30 / USD 94.95

Book Description This comprehensive compendium of algorithms and data structures covers many theoretical issues from a practical perspective. Chapters include information on finite precision issues......一起来看看 《Algorithms and Theory of Computation Handbook》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具