
本系列文章主要介绍机器学习在实践中的应用,介绍利用 python 的生态环境,使用机器学习的算法来解决工程实践中的问题,而不是介绍算法本身。本系列文章参考了《机器学习Python实践》,会通过例子一步一步地引导大家使用机器学习来处理和分类与回归模型相关的问题。每个算法模型都介绍其较为通用且实用的建模过程,力争使基础较差的读者也能无障碍利用python来使用机器学习算法。
1 初识机器学习
1.1 什么是机器学习?
机器学习(Machine Leaming , ML)是一门多领域的交叉学科,涉及概率论、统计学、线性代数、算法等多门学科。 它专门研究计算机如何模拟和学习人的行为,以获取新的知识或技能,重新组织已有的知识结构使之不断完善自身的性能。
机器学习已经有了十分广泛的应用,例如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、 DNA 序列测序、语音和手写识别、战略游戏和机器人运用。
监督学习即在机器学习过程中提供对错指示。一般是在数据组中包含最终结果(0 , 1),通过算法让机器自己减少误差。这一类学习主要应用于分类和预测(Regression &Classify) 。监督学习从给定的训练数据集中学习出一个目标函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入和输出,也可以说包括特征和目标,训练集中的目标是由人标注的。常见的监督学习算法包括回归分析和统计分类。非监督学习又称归纳性学习(Clustering),利用 K 方式(KMean)建立中心( Centriole),通过循环和递减运算(lteration&Descent)来减小误差,达到分类的目的 。
机器学习解决的问题:分类,回归,降维,聚类。其中有些算法适合多种问题,有些只适合解决一种问题,下面列出一些常见的一些机器学习算法。
1.2 学习机器学习的误区
在学习机器学习之前,有一些理解和误区需要先做好说明,防止大家在学习机器学习的过程中过于钻牛角尖。对于通过Python来基本实现机器学习算法,有几个误区可能是比较广泛存在的,应该尽量避免:
1、必须非常熟悉Python的语法和擅长Python的编程。实际上并不需要,Python有scikit-learn模块等可以直接进行建模的调用包,基本只需要学会python的各种基础的知识和应用,熟悉scikit-learn的相关模型用法,以及包括numpy、pandas、matplotlib模块在内的常用的数据处理和可视化包,就可以实现各种机器学习算法了。
2、必须非常深入地学习和理解在scikit- learn中使用的机器学习的理论和算法。实际上也不需要,除非你是这一方向的硕士甚至博士学位的学习者。机器学习不同的算法涉及的知识点是非常广阔的,要做到每一种算法的理论知识的学习都非常深入,是比较难的,实际上简单的机器学习应用中,只需要了解不同算法的基础知识就可以使用了。
3、学习知识就行了,不需要做什么项目。恰恰相反,机器学习的应用是需要大量的项目经验积累,才能把机器学习用得更好。
这些方式对一部分人可能会非常有效,但是这会降低掌握机器学习技能的速度和要达到通过机器学习来解决问题的目标。这也会浪费大量时间单独学习机器学习算法,但却不知如何利用机器学习来解决现实中遇到的问题。 实际上利用Python来实现机器学习算法的门槛并不高,在基本运用过程中,只需要了解机器学习各种算法的一些基础知识,一些常用流程和不同算法,数据集的适用要求就可以了。
1.3 Python 中的机器学习
本系列文章主要关注监督学习中的分类与回归问题处理的预测模型,这是在工业中应用非常广泛的分类,也是scikit-leam擅长的一个领域。与统计学不同,机器学习的预测模型是用来理解数据、解决问题的;聚焦于如何创建一个更加精准的模型,而不是用来解释模型是如何设置的。与大部分机器学习的领域不同的是,预测模型是使用表格格式的数据作为模型的输入的,因此数据的采集和整理是很重要的工作。
在接下来的一系列文章中,致力于让大家能够学习在项目中如何将机器学习的任务和Python有机地结合在一起,以便实现每一个机器学习问题的最佳实践。通过各种实例来理解学到的预测模型的知识。尽量完善一套较为通用的机器学习建模过程,通过python的一系列方法,力求只是进行简单的复制粘贴操作就可以启动一个新的机器学习项目。
我们将通过项目来介绍基于Python的生态环境如何完成机器学习的相关工作。一旦明白了如何使用Python平台来完成机器学习的任务,就可以在不同的项目中重复使用这种方法解决问题。利用机器学习的预测模型来解决问题共有六个基本步骤。
1.4 学习机器学习的原则和技巧
学习机器学习是一段旅程。需要知道自己具备的技能、目前所掌握的知识,以及明确要达到的目标。要实现自己的目标需要付出时间和辛勤的工作 ,但是在目标的实现过程中 ,有很多工具可以帮助你快速达成目标。
1、创建半正式的工作产品。以博客文章、技术报告和代码存储的形式记下学习和发现的内容,快速地为自己和他人提供一系列可以展示的技能、知识及反思。
2、实时学习。不能仅在需要的时候才学习复杂的主题,例如,应该实时学习足够的概率和线性代数的知识来帮助理解正在处理的算法。在开始进入机器学习领域之前,不需要花费太多的时间来专门学习统计和数学方面的知识,而是要在平时的使用和参与过程中不断地进行实时学习,积累知识。
3、利用现有的技能。如果可以编码,那么通过实现算法来理解它们,而不是研究数学理论。使用自己熟悉的编程语言,让自己专注于正在学习的一件事情上,不要同时学习一种新的语言、工具或类库,这样会使学习过程复杂化。 掌握是理想。掌握机器学习需要持续不断的学习。也许你永远不可能实现掌握机器学习的目标,只能持续不断地学习和改进所掌握的知识。
下面三个技巧可以有效地帮助你快速提高学习机器学习的能力。
1.5 总结
这一系列的文章主要是写给对机器学习感兴趣和立志学习机器学习,但只有机器学习基础知识的甚至没多少了解人群,主要是介绍关于机器学习实践的内容,而不是关于机器学习的理论知识。 这里只会简单介绍机器学习的基本原理和算法。在这里假设你已经掌握了机器学习的基础知识,或者有能力自己来完成机器学习的基础知识的学习。
有一些人可能只是对机器学习的理论知识比较了解,但是没有多少项目实践应用,对于机器学习的应用实践可能不怎么了解;有一些人则可能只是对机器学习有一个大概的了解,不知道能通过什么样的工具和方法来使用,该如何使用。而在本系列文章中,将会引导读者如何通过Python实践机器学习算法。
2 Python机器学习的生态圈
随着 Python 生态圈的发展,在机器学习领域,Python 已经发展成为机器学习方面最主要的语言。Python 为什么能够成为机器学习的主流语言?这是因为 Python 不仅可以应用在R&D科研部门,也可以应用在实际的生产当中。本段将主要介绍Python在机器学习方面的生态圈。
2.1 Python
Python是一门面向对象的动态解释语言,简单易学,并且具有很好的可读性。Python语法简洁清晰,特色之一是强制用空白符(White Space)作为语句缩进。Python 具有丰富和强大的类库,它常被称为“胶水语言”,能够很轻松地把用其他语言制作的各种模块(尤其是C/C++)联结在一起。常见的一种应用情形是,先使用 Python 快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分用更合适的语言改写, 比如 3D游戏对图形渲染模块的性能要求特别高,就可以用 C/C++重写,而后封装为 Python可以调用的扩展类库。目前,在 Python 的生态圈中存在大量的第三方扩展类库,可以借助这些类库轻松实现项目需求。需要注意的是,在使用扩展类库时可能需要考虑平台问题,某些扩展类库可能不提供跨平台的实现。Python 目前是一门非常流行的语言,在 TIOBE最新推出的2020年1月编程语言排名位列第三,用户使用率稳居前三。
在PYPL各种编程语言的流行程度的统计中,最新一期2020年1月Python的排名遥遥领先。
Python 是一门动态语言,非常适合于交互性开发和大型项目的快速原型开发。由于Python 具有丰富的类库支持,因此被广泛应用于机器学习和数据科学方面。从这个方面来说,利用 Python 可以将研究项目和生产项目用统一的语言来实现,这就有效地降低了将研究项目转化成生产项目的成本。
2.2 SciPy
SciPy 是在数学运算、科学和工程学方面被广泛应用的Python 类库。它包括统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解器等,因此被广泛地应用在机器学习项目中 。 SciPy 依赖以下几个与机器学习相关的类库。
NumPy:是 Python 的一种开源数值计算扩展。它可用来存储和处理大型矩阵,提供了许多高级的数值编程工具, 如矩阵数据类型、矢量处理、精密的运算库。
Pandas:是基于 NumPy 的一种工具,是为了解决数据分析任务而创建的 。 Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具,也提供了大量能使我们快速、便捷地处理数据的函数和方法 。
Matplotlib:Python中最著名的20绘图库,十分适合交互式地进行制图;也可以方便地将它作为绘图控件,嵌入GUI应用程序中 。
熟悉 SciPy 是提高机器学习实践的有效手段,尤其是在以下几个方面:
2.3 scikit-learn
scikit-leam是Python中开发和实践机器学习的著名类库之一,依赖于SciPy及其相关类库来运行。scikit-leam的基本功能主要分为六大部分:分类、回归、聚类、数据降维、模型选择和数据预处理。需要指出的是,由于scikit-leam本身不支持深度学习,也不支持GPU加速,因此 scikit-leam对于多层感知器(MLP)神经网络的实现并不适合处理大规模问题。(scikit-leam对MLP 的支持在 0.18 版之后增加)
scikit-leam是一个开源项目,遵守BSD协议,可以将项目应用于商业开发。目前主要由社区成员自发进行维护。可能是由于维护成本的限制,scikit-leam相比其他项目要显得更为保守,这主要体现在两个方面 :
比方说,神经网络不见得比决策树好,同样反过来也不成立。最后的结果是有很多因素在起作用的,比方说数据集的大小以及组成。
所以,针对你要解决的问题,最好是尝试多种不同的算法。并借一个测试集来评估不同算法之间的表现,最后选出一个结果最好的。当然,你要选适合解决你问题的算法来尝试。比方说,要打扫房子,你会用真空吸尘器,扫把,拖把;你绝对不会翻出一把铲子来开始挖坑,对吧。
面对海量的机器学习算法,萌新最爱问的是:“我该选什么算法?” 在回答这个问题之前,要先想清楚:
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
探索最优回归方程:数据背后的精准预测密码 在数据分析和统计学的广阔领域中,回归分析是揭示变量之间关系的重要工具,而回 ...
2025-07-02CDA 证书:银行招聘中的 “黄金通行证” 在金融科技飞速发展的当下,银行正加速向数字化、智能化转型,海量数据成为 ...
2025-07-02CDA 数据分析师报考条件全解析:开启数据洞察之旅 在当今数字化浪潮席卷全球的时代,数据已成为企业乃至整个社会发展的核心驱 ...
2025-07-01深入解析 SQL 中 CASE 语句条件的执行顺序 在 SQL 编程领域,CASE语句是实现条件逻辑判断、数据转换与分类的重要工 ...
2025-07-01SPSS 中计算三个变量交集的详细指南 在数据分析领域,挖掘变量之间的潜在关系是获取有价值信息的关键步骤。当我们需要探究 ...
2025-07-01CDA 数据分析师:就业前景广阔的新兴职业 在当今数字化时代,数据已成为企业和组织决策的重要依据。数据分析师作为负责收集 ...
2025-06-30探秘卷积层:为何一个卷积层需要两个卷积核 在深度学习的世界里,卷积神经网络(CNN)凭借其强大的特征提取能力 ...
2025-06-30探索 CDA 数据分析师在线课程:开启数据洞察之旅 在数字化浪潮席卷全球的当下,数据已成为企业决策、创新与发展的核心驱 ...
2025-06-303D VLA新范式!CVPR冠军方案BridgeVLA,真机性能提升32% 编辑:LRST 【新智元导读】中科院自动化所提出BridgeVLA模型,通过将 ...
2025-06-30LSTM 为何会产生误差?深入剖析其背后的原因 在深度学习领域,LSTM(Long Short-Term Memory)网络凭借其独特的记忆单元设 ...
2025-06-27LLM进入拖拽时代!只靠Prompt几秒定制大模型,效率飙升12000倍 【新智元导读】最近,来自NUS、UT Austin等机构的研究人员创新 ...
2025-06-27探秘 z-score:数据分析中的标准化利器 在数据的海洋中,面对形态各异、尺度不同的数据,如何找到一个通用的标准来衡量数据 ...
2025-06-26Excel 中为不同柱形设置独立背景(按数据分区)的方法详解 在数据分析与可视化呈现过程中,Excel 柱形图是展示数据的常用工 ...
2025-06-26CDA 数据分析师会被 AI 取代吗? 在当今数字化时代,数据的重要性日益凸显,数据分析师成为了众多企业不可或缺的角色 ...
2025-06-26CDA 数据分析师证书考取全攻略 在数字化浪潮汹涌的当下,数据已成为企业乃至整个社会发展的核心驱动力。数据分析师作 ...
2025-06-25人工智能在数据分析的应用场景 在数字化浪潮席卷全球的当下,数据以前所未有的速度增长,传统的数据分析方法逐渐难以满足海 ...
2025-06-25评估模型预测为正时的准确性 在机器学习与数据科学领域,模型预测的准确性是衡量其性能优劣的核心指标。尤其是当模型预测结 ...
2025-06-25CDA认证:数据时代的职业通行证 当海通证券的交易大厅里闪烁的屏幕实时跳动着市场数据,当苏州银行的数字金融部连夜部署新的风控 ...
2025-06-24金融行业的大数据变革:五大应用案例深度解析 在数字化浪潮中,金融行业正经历着深刻的变革,大数据技术的广泛应用 ...
2025-06-24Power Query 中实现移动加权平均的详细指南 在数据分析和处理中,移动加权平均是一种非常有用的计算方法,它能够根据不同数据 ...
2025-06-24