查看原文
其他

学 Python 没找对路到底有多惨?| 码书

异步图书 CSDN 2019-03-31

作者 | 异步图书

责编 | 胡巍巍

本文内容经授权摘自《Python机器学习》

方法不对,努力白费!

多少程序员想转行AI,却倒在了学Python的歧路上?

都知道做AI赚钱多,为何你总是找不对门路?

众所周知,目前机器学习红遍全球。男女老少都在学机器学习模型、分类器、神经网络。

你也想成为一份子吗?但你该如何开始?以及到底该如何定义机器学习?到底什么样的教材,才是真正适合你的?今天的文章一定对你有帮助!


什么是机器学习?


从出生的那天起,我们就一直在学习中度过。

随着逐渐的成长,开始学习如何走路;通过倾听周围人的谈话,学习并尝试模仿;通过学习不同单词的意思,使得在需要时懂得该如何进行表达。

同时也开始区分事情的好坏。例如,在第一次靠近火源时,会因灼热而后退,从而明白要与火源保持一定的距离。

那么,现在思考一下计算机的工作原理。

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

而机器学习此时就可以发挥作用了。如果给予计算机像人类一样的思考能力,那会发生什么呢?

可以用计算机能理解的方式,给出每一天的任务令其进行计算,还可以建立一些模型来帮助计算机在将来采取行动。

人类从经验中学习知识,计算机则遵循指令执行任务。然而,其实还可以直接向计算机提供经验让其学习并为行动做准备。

目前我们是以结构化的方式定义经验。因此,我们将计算机从数据(经验)中进行学习的过程称为机器学习(Machine Learning)。

以买香蕉为例。你的母亲需要你去市场上买一些香蕉,同时她告诉你鲜黄色的香蕉很好吃。

你到一个水果商那里,开始按照母亲的建议挑选香蕉。你买了20根香蕉后就回家了,然而回家后你注意到有些香蕉的味道并不像其他的那样好。

事实上,有5根香蕉是坏的。你逐个拿起香蕉并开始作出假设。 20根香蕉中有12根大香蕉和8根小香蕉。

这8根小香蕉都很美味,但是大香蕉就不一样了,在12根大香蕉中有5根味道不如预期。

你已经掌握了挑选香蕉的知识。第二天,当你到达市场时,注意到有个水果商在打折出售香蕉,这些香蕉和昨天的不同,它们的皮带有一些绿色。

从这里买完香蕉回到家后,根据之前的经验将每一根香蕉分为好与坏,会发现大的绿色香蕉很好吃,但是小的绿色香蕉的味道不如其他的好。这样,你就学会了新规则。

你开始将自己看作是香蕉专家。有一天,你不得不去另一个城市参加表亲的婚礼。

现在你惊讶地发现这里所有的香蕉都很小,但是味道却都很好。在这里你了解到来自这个区域的香蕉是畅销商品。

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

现在这个任务就可以由机器学习负责指引计算机完成了。可以使用数据点的形式向计算机提供知识。数据点的属性称为特征(Feature),这里的特征是香蕉的大小(小、中、大)、颜色、产地等。

输出(Output)就是味道(好或者坏)。将这些数据输入到机器学习程序中,就可以让计算机学习如何区分香蕉的好与坏。

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


为什么选择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!!")

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

本文摘自《Python机器学习》

《Python机器学习》

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

ISBN 978-7-115-50135-6/

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

内容提要:

《Python机器学习》通过解释数学原理和展示编程示例对机器学习进行了系统、全面的解析。

《Python机器学习》共分为12章,内容涵盖了机器学习以及Python语言的基础知识、特征工程的概念与操作技术、数据可视化技术的实现、监督学习及无监督学习算法、文本分析、神经网络和深度学习、推荐系统的构建方法以及预测处理时间序列的方法等。

阅读本书能够加深读者对机器学习的认识和理解,从而达到理论与实践相结合、学以致用的目的。 

喜欢这本书吗?

CSDN联合异步图书,

针对CSDN用户推出限时7.8折的优惠价。

买一本书,

不过是两杯咖啡的价格,

但如果掌握了本书的精华,

或可让你升职加薪!

上进的你,

动动手指赶快把新知识纳入囊中吧!

扫码就可购买哦!

点击阅读原文,也可秒购《Python机器学习》↓↓↓

文章已于修改

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存