零起点Python机器学习快速入门【1.1】

零起点Python机器学习快速入门【1.1】 1.4 机器学习经典案例目前人工智能、机器学习正处于黄金时期各种应用随处可见以下是一些常见的机器学习应用案例。 机器人客服当你拨打移动、银行等公司的服务热线时大部分都是通过人工智能技术合成的电脑客服在和你沟通只有遇到电脑客服无法处理的问题才会转给人工处理。 语音助理苹果的 Siri 和微软的小娜就是采用人工智能开发的语音助手两者会自动识别你的语音命令。 垃圾邮件检测根据邮箱中的邮件识别哪些是垃圾邮件哪些不是。这样的模型可以使用程序帮助归类垃圾邮件和非垃圾邮件。 信用卡欺诈检测根据用户的信用卡交易记录识别哪些交易是该用户操作的哪些不是。 数字识别根据信封上手写的邮编识别出每一个手写字符所代表的数字。这样的模型可以帮助程序阅读和理解手写邮编并根据地理位置分类信件。 人脸识别根据相册中的众多数码照片识别出包含某一个人的照片根据人脸管理照片。 产品推荐根据用户的购物记录和冗长的收藏清单识别出这其中哪些是该用户真正感兴趣并且愿意购买的产品。京东、淘宝都有大量这样的案例。 医学分析根据病人的症状和病人资料数据库预测该病人可能患了什么病。 股票交易这个就是目前非常火热的智能投顾技术根据股票现在和以往的价格波动判断这支股票是应该建仓、持仓还是减仓。 客户细分根据用户在产品试用期的行为模式和所有用户过去的行为识别出哪些用户会转变成该产品的付款用户哪些不会。 形状鉴定根据用户在触摸屏幕上的手绘和一个已知的形状资料库判断用户想描绘的形状。 艺术作品鉴别艺术作品的鉴别是极其复杂的专家通常会判断它所属的类型、流派、作者和时代。新泽西州罗格斯大学的专家使用人工智能技术鉴别画作的流派和作者。 婚恋匹配国内外的婚恋交友网站经常通过性格测试来提取数据然后通过人工智能分析进行婚恋匹配。第 2 章 开发环境2.1 数据分析首选PythonPython 人工智能和机器学习在本质上底层都是数据分析而对于数据分析行业首选的编程工具就是 Python 语言。经常有网友认为自己投资失败或者量化策略失效是因为 Python 开发环境不好希望自己重新设计一个甚至希望用 C、 Java 来重新开发量化软件。对于提出这类问题的网友笔者曾经这样答复“量化的核心是策略至于量化软件的运行速度、用户 GUI 界面都是程序员的事情。大家是做金融操盘手只要会写策略就行。就像会计如果觉得 Excel、用友或金蝶财务软件的某些功能不好用另外再选一套财务软件就好完全没必要自己也去写一套财务软件。 ”在软件工程领域有一句著名的格言 “ Dont Reinvent the Wheel”——不要重复发明轮子。这句话说得非常经典也非常有道理。至于为什么选择 Python 语言作为数据分析和量化分析的首选开发平台大家可以参考 Top 极宽量化社区的介绍 《 zwPython 史前故事》。金融股票、足彩分析。机器学习等量化分析系统本质上都是数据分析如果大家有兴趣还可以浏览笔者的博客内容《大数据 why Python》 http://ziwang.com/forum. php?modviewthreadtid58。1. 入门简单功能强大Python 是最适合初学者的编程语言也是目前 IT 行业唯一的入门简单、功能强大的工业级开发平台。事实上 Python 已经超越普通编程语言成为 IT 行业的万能开发平台。 1入门简单任何熟悉 JavaScript 脚本、 Visual Basic、 C 语言、 Delphi 的用户通常一天即可学会 Python。即使是不会编程的美工设计师、打字员一周内也能熟练掌握 Python学习难度绝对不会高于 Photoshop、五笔至少笔者和许多程序员一样现在还不会使用五笔字型。zwPython 原本就是面向美工设计的最早的用户手册名字就叫《设计师学编程》。 2功能强大海量级的 Python 模块库提供了 IT 行业最前沿的开发功能。 大数据 Pandas 已经逐步碾压 R 语言。 CUDA高性能计算 Python、与 C C、 Fortran 是 NVIDIA 公司官方认可的 3 种编程语言也是目前唯一适合大众用户的 CUDA编程工具。 机器学习 TensorFlow、 PyTorch、 Scikit-learn、 Theano 都是国际上热门的机器学习平台。 自然语言 NLTK全球首选的自然语言处理平台 SpaCy工业级NLP 平台。 人脸识别 OpenCV光流算法、图像匹配、人脸算法简单优雅。 游戏开发 Pygame 提供图像、音频、视频、手柄、 AI 等全套游戏开发模块库。 字体设计 Fontforge是唯一商业级的字体设计开源软件内置的脚本语言和底层核心的 Fonttools都是基于 Python。 电脑设计 blend、 GIMP、 inkscape、 MAYA、 3DS 都内置或扩展了Python 语言支持。上述 Pandas、 CUDA、 TensorFlow、 PyTorch、 Scikit-learn、 Theano 为Python 模块库或 IT 行业术语。目前热门的 iOS、 安卓等手机 APP 应用开发也可以使用 Python 开发但基本都是商业收费模块因此未集成到 zwPython 软件包大家可以自行搜索。既然 Python 如此美好而且是 100%免费的开源软件学习 Python 的人也越来越多为什么 Python 相对于 C#、 JavaScript、 Visual Basic、 C 语言始终还只是一种小众语言呢笔者认为 Python 的“大众化”之路存在以下两个瓶颈。 配置软件行业有一句俗话“搞懂了软件配置就学会了一半”。对于 Python 和 Linux 等许多开源项目而言 80%的问题都出现在配置方面尤其是模块库的配置。 OOP面向对象程序设计大部分人都认为 Python 是一种“面向对象”的编程语言而 OOP 的编程风格业界公认比较繁杂。如果能够解决好以上两个问题 Python 的学习难度可以降低 90%而在应用领域和开发效率方面则可以瞬间提升数十倍效能而且这种提升是零成本的。2. 难度降低性能提高笔者在 WinPython 软件包的基础上推出了“ zwPython”——字王集成式 Python 开发平台。 业界首次提出“零配置、零对象”的研发理念绿色软件封装模式类似 MAC 开箱即用风格无须安装解压即可直接使用还可以放入 U 盘支持 Mob-APP 移动式开发编程。“外挂”式“核弹”级开发功能内置很多功能强大、 IT 前沿的开发模块库例如 OpenCV 视觉、人脸识别、 CUDA 高性能 GPU 并行计算 Opencl、 Pandas 大数据分析、 TensorFlow、 PyTorch 机器学习、NLTK 自然语言处理。 便于扩展用户可以轻松增删相关模块库全程智能配置无须用户干预就好像拷贝文件一样简单而且支持 U 盘移动便携模式真正实现了“一次安装随处可用”。 针对中文开发文档缺乏、零散的不足内置多部中文版 Opencv、Fontforge 和 Python 入门教材。 大量示例脚本源码涵盖 OpenCV、 CUDA、 Opencl、 Pygame 等。如此种种只是为了便于 IT 行业外的用户能够“零起步”、快速入门并且短时间内应用到生产环节当中去。zwPython 前身是 zw2015sdk字王智能字模设计平台原设计目标是向广大美工设计师提供一款统一的、可编程的字体设计平台以便于大家交流。 美工设计师、美工都是文艺青年、 IT 小白所以简单是必需的开箱即用也必须是标配。 做设计图像处理 PIL、 Matplotlib 模块是必需的。 集成了 Opencv 作为图像处理、匹配模块自然也提供了机器学习功能。 字模处理数据量很大属于大数据范畴须集成 SciPy、 NumPy 和Pandas 数据分析模块。 由于原生 Python 速度慢所以增加了 Pycuda、 Opencl 高性能 GPU计算模块。如此一而再、再而三地扩充发现 zwPython 已经基本覆盖了目前 Python和 IT 编程 90%的应用领域因此又增加了部分模块将 zwPython 扩展成为一个通用的、集成式 Python 开发平台。3.“零对象”编程模式虽然很多人认为 Python 是一种“面向对象”的编程语言。但对于初学者而言把 Python 视为一种 Basic 风格的、过程式入门语言学习难度可以降低 90%基本上学习一小时即可动手编写学习代码。有人说“面向对象”最大的好处是方便把人脑子搅乱。Windows、 Linux、 UNIX、 Mac OSX 内核都是使用 C 语言、汇编写的。有一种系统是 C写的内核就是诺基亚的塞班系统据说代码量比Windows XP 还大连他们自己的程序员都无法维护最后就死掉了。简而言之“面向对象”的代码风格一个字“繁”、两个字“繁繁”、三个字“繁繁繁”。“零对象编程模式用 Basic 的方式学习 Python”是笔者向 Python 等编程语言的入门用户提出的一种全新的学习理论一家之言仅供参考。Talk is cheap,Show me the code大家还是多多动手。大家很容易理解“零配置”下面关于“零对象”再补充几点。 不写“面向对象”风格的代码不等于不能使用对于各种采用“对象”模式开发的模块库我们仍然可以直接调用。 将 Python 视为非“面向对象”语言并非大逆不道事实上许多人认为 Python 也是一种类似 LISP 的“函数”编程语言。 笔者从事编程十多年从未用过“面向对象”模式编写过一行“ class”类对象代码依然可以应对各种编程工作。 目前“面向对象”编程理论在业界仍然争论不休入门者功力不够最好避开强者之间的火力杀伤。“面向对象”的鼻祖 C 11 标准直到 2015 年依然处于推广阶段而且争议纷纷。“面向对象”过于复杂与“人生苦短我用 Python”的优雅风格天生不合。2.2 用户运行平台本节主要讲解 Python 开发环境和数据包的配置、应用流程方面的知识。本书所有案例程序均采用纯 Python 语言开发除特别指明外均默认使用 Python 3 语法且经过 zwPython 平台测试。zwPython 是 TopQuant 极宽公司推出的一个 Python 集成版本功能强大属于免费开源软件。系统内置了数百种专业的 Python 模块库无须安装解压即用。有关 zwPython 的使用可参考软件自带的《 zwPython 用户手册》。本书所有案例程序可用于 zwPython 平台 以及各种支持 Python 3 的设备平台包括 Linux 操作系统、 Mac 苹果电脑以及安卓系统、树莓派。其他非 zwPython 用户运行本书程序时如果出现问题通常是缺少有关的 Python 模块库可以根据调试信息安装相关的 Python 模块库再运行相关程序。zwPython 及本书配套下载地址请参见 Top 极宽量化社区“下载中心” http://topquant.vip 或 http: //ziwang.com。2.3 程序目录结构本书配套程序的工作目录是 zwPython\py_demo这也是本书默认的工作目录凡是没有特别标注目录的脚本文件一般都位于该目录。有关的程序会定时在读者群发布更新请读者及时下载。相比普通的 Python 版本本书配套的教学版的 zwPython 目录中多了一个 py_demo 目录。py_demo 目录收录了相关培训课程的配套代码和所需数据 py_demo目录也可以复制到其他目录建议放到 zwPython 根目录下。zwPython 目录结构中的其他子目录如下。 \zwPython\doc\用户文档中心包括用户手册和部分中文版的模块库资料。 \zwPython\py35\ Python 3.5 版本系统目录除增加、删除模块库外一般不需要改动本目录下的文件以免出错。另外如果日后 Python 版本升级这个目录也会变化如 Python 3.6会采用 py36 作为目录。 \zwPython\demo\示例脚本源码。 \zwPython\zwrk\ zw 工作目录用户编写的脚本代码文件建议放在本目录下。 \zwPython\TFB\ Top Football又称 Top Quant for Football简称TFB极宽足彩量化分析系统快速学习版无此目录。足彩版本配套的 TFB 极宽足彩量化分析系统与 zwPython 进行了集成处理可直接输入使用支持 Python 3.x。移植时或使用其他 Python环境时可以把 TFB 目录下的脚本文件全部复制到自己的代码工作目录注意代码里面有关数据文件目录的设置。2.4 Spyder编辑器界面设置1. 开发环境界面设置在设置界面之前可随意把一个 Python 源码文件用鼠标拖到 Python编程语言编辑器 Spyder 的编辑框中如图 2-1 所示。Spyder 编辑器的界面设计非常合理参考了 MATLAB特别适合量化分析国际投行一般都选择用这种布局作为标配。通常需要优化的只有 Outline导航面板又称函数列表面板类似Delphi 语言的 Struct 函数列表面板。在 Spyder 编辑器默认配置中 Outline 面板是不显示的单击菜单 View→ Panes→Outlines如图 2-2 所示将显示 Outline 面板。Outline 面板显示后它的默认位置在代码编辑器和右侧窗口的中间。建议单击 Outline 面板左上角的“窗口缩放”按钮拖动面板到右上方将其与 Var变量面板、 File文件面板等合并。Outline 面板的作用是对代码中的函数、类、变量进行快速导航定位。单击 Outline 面板的函数、类、变量名称后左侧代码编辑器就会自动移动到相关代码如图 2-3 所示。对于大型项目而言使用 Outline 面板可以提高效率。需要注意的是由于 Spyder 软件未来版本升级具体操作界面和细节可能会有所不同本书其他软件和模块也是如此这个属于正常情况大家无须担心。2. 代码配色技巧zwPython 的 IDE 代码编辑器是 Spyder默认配色是 Spyder 模式采用白底黑字与传统的 IDE 环境差别很大如图 2-4 所示。如图 2-5 所示是最新的 delphi-xe10 的编辑器配色模式 Twilight 模式。这种黑底模式也是微软 VS 等开发平台标准的代码编辑器配色模式。幸运的是 Spyder 编辑器内置的配色模式里也有类似的模式。运行 Spyder 编辑器单击菜单 Tools→Preferences打开 Preferences对话框。在左侧的列表框中选择 Editor编辑器在右侧 Display显示面板的 Syntax color scheme语法配色方案下拉列表框中选择 Spyder/ Dark暗调模式即可。如图 2-6 所示。不同版本的 Spyder 编辑器调整细节会有所不同请读者注意。