最近学校数学建模大赛正在培训python。这让我又突然对python感兴趣了,在考虑未来python可以为我做什么,通过搜集资料,主要对以下两个方向感兴趣,机器学习和数据分析。
一、机器学习
数据科学 —— 包括机器学习、数据分析和数据可视化
首先,我们来回顾一下什么是机器学习。
我认为,解释什么是机器学习的最好方法莫过于举个例子。
假设您想开发一个程序用于自动检测图片中的内容。
因此,对于下面的这张图片(图片1),您希望您的程序能识别出这是条狗。
图1
而对于下面的这张图片(图片2),您希望您的程序能识别出它是张桌子。
图2
您也许会说,我可以用几行代码搞定。例如,如果在图片上有很多淡棕色的像素,那么我们可以说那是狗。
或者,您可以找到在照片中检测边缘的方法。然后,您也许会说,如果有很多直边,那么那就是一张桌子。
但是,这种方法很快就遇到麻烦了。如果图片上是条没有棕色毛发的白狗怎么办?如果图片上显示的只是桌子的圆形部分呢?
轮到机器学习大显身手了。
机器学习可实现一些算法,能自动检测给定输入中的模式。
比如,您给机器学习的算法提供1000张狗的照片和1000张桌子的照片。那么,它将会学习区别狗和桌子。当您给出一张狗或桌子的新图片时,它将能够识别出是狗还是桌子。
我认为,这和婴儿学习新事物有点类似。婴儿是如何知道一样东西看起来像狗,而另一样东西看起来像桌子呢?可能就是从大量的例子中学到的。
您也许不会明确地告诉一个婴儿:“如果一样东西是毛茸茸的,并且有着淡棕色的毛发,那么它可能是条狗。”
您可能只是说:“那是条狗。这也是条狗。这是桌子。那也是桌子。”
机器学习算法的工作方式大致相同。
您可以把同样的想法应用于:
推荐系统(像YouTube、Amazon和Netflix在用的)
面部识别
声音识别
您可能听说过的流行的机器学习算法包括:
- 神经网络
- 深度学习
- 支持向量机
- 随机森林
您可以使用任何一个上述算法来解决我刚才解释过的图片标注问题。
将Python用于机器学习
有一些流行的Python机器学习库和框架,其中最流行的两个是scikit-learn和TensorFlow。
scikit-learn附带了一些更流行的内置机器学习算法。我刚才提到了其中的几个。
TensorFlow更像是个低级库,它允许您构建自定义机器学习算法。
如果您刚开始一个机器学习项目,那么我建议您先用scikit-learn。如果您开始遇到效率问题,那么我建议用TensorFlow。
我应该如何学习机器学习呢?
要学习机器学习基础知识的话,我建议选择斯坦福或加州理工学院的机器学习课程。
请注意,您需要微积分和线性代数的基本知识以理解这些课程中的某些内容。
然后,我会用Kaggle来练习从课程中学到的知识。Kaggle是个网站,大家在这个网站上比试谁能对一个给定的问题构建出最佳的机器学习算法。网站上也有给初学者用的好教程。
二、数据分析和数据可视化
为了帮助您理解,我在这里给您举个简单的例子。假设,您为一家在线销售产品的公司工作。
那么,作为数据分析师,您也许会画一个类似的条形图。
图3 条形统计图
从这张图上,我们可以看到,在某个特定的周日,对于某件产品来说,男性购买了400多件,而女性购买了大约350件。
作为一个数据分析师,您也许会对其中的差异做出几个可能的解释。
一个很显然的可能解释是,该产品在男性中比在女性中更流行。另一个可能的解释是,样本量太小,这个差异是偶尔产生的。还有一个可能的解释是,在周日,由于某种原因,男性比女性更倾向于购买该产品。
为了搞明白哪个解释是正确的,您可能绘制另一张图,如下图所示:
图4 折线图
我们不再只显示周日的数据,而是整整一周的数据。正如您所见,从这张图中,我们可以看到,这种差异在不同的日子里很一致。
从这个简单的分析中,您可能得出了结论,对这种差异,一个最有说服力的解释就是,这个产品更受男性而不是女性欢迎。
另一方面,如果您看到是如下所示的图呢?
图5 折线图
那么,如何解释出现在周日的差异呢?
您也许会说,也许出于某种原因,男性在周日更倾向于购买该产品。或者,也许只是巧合,男性在周日购买了更多的该产品。
好了,这是个简化的例子,展示了数据分析在真实世界中看起来的样子。
我在谷歌和微软工作的时候做过数据分析,跟这个例子非常相似,只是更复杂一些罢了。事实上,我在谷歌工作时,是用Python来做这种分析,而我在微软的时候,用的是JavaScript。
在这两家公司工作的时候,我用SQL从数据库中提取数据。然后,我会用Python和Matplotlib(在谷歌工作时)或JavaScrip和D3.js(在微软工作时)进行数据可视化和分析。
用Python进行数据分析/可视化
最流行的数据可视化库之一是Matplotlib。
刚开始学习的话,它是个不错的库,因为:
它容易上手
其他一些库,如seaborn是以它为基础的。因此,学习Matplotlib可以帮助您随后学习其他库。
我应该如何学习用Python进行数据分析/可视化?
首先,您应该学习数据分析和可视化的基础知识。我在网上没有找到相关的好资源。因此,最终,我在YouTube上做了相关的视频(用Python和Matplotlib进行数据分析/可视化的入门课程)。
我还在Pluralsight上做了相关的整个课程,如果您报名参加他们的10天免费试用,您就可以免费获得这个课程。
这两个我都推荐给您。
学习了数据分析和可视化基础知识之后,在Coursera和Khan Academy上学习统计的基础知识也是很有帮助的。
转载:[http://www.techug.com/post/what-can-you-do-with-python-the-3-main-applications.html]