传智播客博学谷
微信号:boxuegu-
get最新最全的IT技能
免费领取各种视频资料
可能你也曾想奋不顾身一跃入坑,怎奈老是觉得机器学习知识体系过于庞杂,或者担忧自己的数学成为短板,还没开始,就已放弃......
今天这篇文章分享给那些入坑受阻,或者还没来得及入坑但一直处于备战状态,还差临门一脚的读者;以及因为恐惧数学想入坑却犹豫不决的读者。
一、什么是机器学习?
1. 机器学习是人工智能的一个分支
机器学习是实现人工智能的一种途径,它从数据中提取知识,在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。
机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。
机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。
2. 机器学习能够解决什么问题?
最成功的机器学习算法是能够将决策过程自动化的那些算法,这些决策过程是从已知示例中泛化得出的。
在这种叫作监督学习(supervised learning)的方法中,用户将成对的输入和预期输出提供给算法,算法会找到一种方法,根据给定输入给出预期输出。
垃圾邮件分类就是监督学习很好的例子,利用机器学习算法,用户为算法提供大量电子邮件(作为输入),以及这些邮件是否为垃圾邮件的信息(作为预期输出)。给定一封新邮件,算法就能够预测它是否为垃圾邮件。
还有另一类算法是无监督学习算法(unsupervised learning algorithm)。在无监督学习中,只有输入数据是已知的,没有为算法提供输出数据。
检测网站的异常访问模式就是无监督学习:
想要识别网站的滥用或bug,找到异常的访问模式往往是很有用的。每种异常访问模式都互不相同,而且你可能没有任何记录在案的异常行为示例。在这个例子中你只是观察流量,并不知道什么是正常访问行为和异常访问行为,所以这是一个无监督学习问题。
无论是监督学习任务还是无监督学习任务,将输入数据表征为计算机可以理解的形式都是十分重要的。通常来说,将数据想象成表格是很有用的。
3. 怎样构建机器学习解决方案?
构建机器学习解决方案的时候,最重要的部分是理解你正在处理的数据,以及这些数据与你想要解决的任务之间的关系。
在构建机器学习解决方案的过程中,你应该给出下列问题的答案,或者至少要将这些问题记在脑中。
我想要回答的问题是什么?已经收集到的数据能够回答这个问题吗?
要将我的问题表示成机器学习问题,用哪种方法最好?
我收集的数据是否足够表达我想要解决的问题?
我提取了数据的哪些特征?这些特征能否实现正确的预测?
如何衡量应用是否成功?
机器学习解决方案与我的研究或商业产品中的其他部分是如何相互影响的?
从更大的层面来看,机器学习算法和方法只是解决特定问题的过程中的一部分,一定要始终牢记整个项目的大局。许多人浪费大量时间构建复杂的机器学习解决方案,最终却发现没有解决正确的问题。
二、选择Python入坑机器学习
Python 既有通用编程语言的强大功能,也有特定领域脚本语言(比如MATLAB 或R)的易用性。它有用于数据加载、可视化、统计、自然语言处理、图像处理等各种功能的库。这个大型工具箱为数据科学家提供了大量的通用功能和专用功能。
使用Python 的主要优点之一,就是利用终端或其他类似Jupyter Notebook 的工具能够直接与代码进行交互;机器学习和数据分析本质上都是迭代过程,由数据驱动分析。这些过程必须要有快速迭代和易于交互的工具。
作为通用编程语言,Python 还可以用来创建复杂的图形用户界面(graphical user interface,GUI)和Web 服务,也可以集成到现有系统中。
三、机器学习必要的库和工具
1.scikit-learn
scikit-learn 是一个开源项目,可以免费使用和分发,任何人都可以轻松获取其源代码来查看其背后的原理。scikit-learn 项目正在不断地开发和改进中,它的用户社区非常活跃。它包含许多目前最先进的机器学习算法,每个算法都有详细的文档。
http://scikit-learn.org/stable/documentation
scikit-learn 是一个非常流行的工具,也是最有名的Python 机器学习库。它广泛应用于工业界和学术界,网上有大量的教程和代码片段。scikit-learn也可以与其他大量Python 科学计算工具一起使用。
2. Jupyter Notebook
Jupyter Notebook 是可以在浏览器中运行代码的交互环境。这个工具在探索性数据分析方面非常有用,在数据科学家中广为使用。它支持多种编程语言。用Jupyter Notebook 整合代码、文本和图像非常方便。
3. NumPy
NumPy 是Python 科学计算的基础包之一。它的功能包括多维数组、高级数学函数(比如线性代数运算和傅里叶变换),以及伪随机数生成器。
在 scikit-learn 中,NumPy 数组是基本数据结构。scikit-learn 接受 NumPy 数组格式的数据。你用到的所有数据都必须转换成 NumPy 数组。NumPy 的核心功能是 ndarray 类,即多维(n 维)数组。数组的所有元素必须是同一类型。
4. SciPy
SciPy 是 Python 中用于科学计算的函数集合。它具有线性代数高级程序、数学函数优化、信号处理、特殊数学函数和统计分布等多项功能。scikit-learn 利用 SciPy 中的函数集合来实现算法。
5. matplotlib
matplotlib 是 Python 主要的科学绘图库,其功能为生成可发布的可视化内容,如折线图、直方图、散点图等。
6. pandas
pandas 是用于处理和分析数据的 Python 库。它基于一种叫作 DataFrame 的数据结构,这种数据结构模仿了R 语言中的DataFrame。简单来说,一个pandas DataFrame 是一张表格,类似于 Excel 表格。pandas 中包含大量用于修改表格和操作表格的方法,尤其是可以像 SQL 一样对表格进行查询和连接。
NumPy 要求数组中的所有元素类型必须完全相同,而 pandas 不是这样,每一列数据的类型可以互不相同(比如整型、日期、浮点数和字符串)。
pandas 的另一个强大之处在于,它可以从许多文件格式和数据库中提取数据,如SQL、Excel 文件和逗号分隔值(CSV)文件。
四、参考图书推荐
今天介绍的这两本图书,有个共同点,使用 Python 实现那是必然的,我们强调的共同点是这两本书偏重实现与实践,而不纠缠数学,是小伙伴们上手Python 机器学习的首选参考书。
1. 《Python机器学习基础教程》
最新上架、非常受欢迎的机器学习入门书:
Andreas C. Müller ,Sarah Guido 著
张亮(hysic) 译
¥ 79.00元 / 电子书 ¥ 39.99元
这是近期非常受读者喜爱的 Python 机器学习入门书。原版Introduction to Machine Learning with Python: A Guide for Data Scientists在 Amazon 不论是算法还是机器学习分类都是稳居前十的。第一作者 Andreas C. Müller 是 scikit-learn 库维护者和核心贡献者,去他 GitHub 页面翻了翻,发现这书的 star 是1.9k,关注度还是不错的。
《Python机器学习基础教程》重点讨论的是机器学习算法的实践而不是其背后的数学,为数学所困的小伙伴们大可放心。跟着书中的内容,你可以使用 Python 和 scikit-learn 库一步一步构建一个有效的机器学习应用。
2. 《机器学习实战》
最畅销的机器学习实战图书,介绍并实现机器学习主流算法:
Peter Harrington 著
李锐,李鹏,曲亚东,王斌 译
¥ 69.00元 / 电子书 ¥ 39.99元
图灵最受欢迎的机器学习算法书。跟前一本风格类似,也是更多地讨论如何编码实现机器学习算法,而尽量减少讨论数学理论。将数学矩阵描述的机器学习算法转化为可以实际工作的应用程序,是本书的主要目的。
全书通过精心编排的实例,切入日常工作任务,摒弃学术化语言,利用高效的可复用Python代码来阐释如何处理统计数据,进行数据分析及可视化。
通过各种实例,读者可从中学会机器学习的核心算法,并能将其运用于一些策略性任务中,如分类、预测、推荐。另外,还可用它们来实现一些更高级的功能,如汇总和简化等。
来源:量化侠
编辑:@IT技术头条
免费资料
领取专属 10元无门槛券
私享最新 技术干货