作者 | 异步图书
责编 | 胡巍巍
本文内容经授权摘自《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.5折的优惠价。
买一本书,
不过是两杯咖啡的价格,
但如果掌握了本书的精华,
或可让你升职加薪!
上进的你,
动动手指赶快把新知识纳入囊中吧!
扫码就可购买哦!
点击阅读原文,也可秒购《Python机器学习》↓↓↓