原标题为SomeEssentialHacksandTricksforMachineLearningwithPython,作者TirthajyotiSarkar。我们选择了一些使用Python进行机器学习实践的基本技巧。我是一名计算机科学与技术专业的学生。我如何开始机器学习/深度学习/人工智能?机器学习入门从来都不是一件容易的事。除了成熟的MOOC,网络上还有大量免费资源。以下是一些对我有帮助的资源:从YouTube上的一些精彩视频开始。阅读一些优秀的教科书或文章。比如,你读过《 终极算法: 机器学习和人工智能如何重塑世界》吗?我保证你会爱上这本关于机器学习的书的精彩页面。首先明确区分相关术语——机器学习、人工智能、深度学习、数据科学、计算机视觉、机器人技术。阅读或聆听专家的讲座。观看这段由有影响力的数据科学家BrandonRohrer制作的精彩视频,它清楚地解释了与数据科学相关的概念的定义和差异。确切地知道你想在学习中取得什么。然后,上Coursera的课程,或者华盛顿大学的一些课程,也是不错的选择。关注一些很棒的博客:KDnuggets、MarkMeloon关于数据科学的博客、BrandonRohrer的博客、OpenAI的博客,主要是关于他们的研究。如果您热衷于在线MOOC课程,请查看本文以获取指导。最重要的是,培养一种感觉。加入一些好的社交论坛,但要抵制追随耸人听闻的头条新闻和新闻内容的诱惑。自己阅读它是什么,不是什么,它可能去哪里,它有什么可能性。然后坐下来思考如何将机器学习或数据科学原理应用到您的日常工作中。建立一个简单的回归模型来预测您下一次午餐的费用,或者从公用事业公司下载您的用电量数据并在Excel中绘制一个简单的时间序列图以找出用电量的一些模式。在您完全沉浸于机器学习之后,请观看此视频。Python是机器学习/人工智能的好语言吗?除非你是一名从事复杂算法的纯理论证明的博士研究员,否则你将主要使用现有的机器学习算法并将它们应用于新问题。这需要您知道如何编程。关于“数据科学的最佳语言”存在很多争论。当辩论升温时,停下来阅读这篇富有洞察力的文章,了解您的想法并审视您的选择。或者,查看KDnuggets文章。目前,人们普遍认为Python可以帮助开发人员提高效率,从开发到部署和维护。Python的语法比Java、C和C++更简单、更高级。它拥有充满活力的社区、开源文化、数百个高质量的机器学习库,以及来自行业巨头(例如:Google、Dropbox、Airbnb等)的支持。本文将重点介绍Python的基本技能,并将其应用于机器学习。需要了解和掌握的基本库为了有效地练习机器学习,您需要掌握一些核心Python库。下面简要介绍这些库。NumpyNumericalPython的缩写,NumPy是使用Python进行科学计算和数据分析所必需的基础程序库。几乎所有高级工具都构建在Numpy之上,例如Pandas和scikit-learn。TensorFlow使用Numpy数组作为基本构建块,基于它构建用于深度学习任务的Tensor对象和图形流。许多Numpy操作都是用C实现的,这使得它运行得更快。这对于数据科学和现代机器学习任务来说是一个宝贵的优势。Pandas是Python科学计算中最流行的通用数据分析库。Pandas是基于Numpy数组构建的,因此它保留了计算速度快的特点,并提供了数据工程领域的许多功能,包括:可以读/写多种不同的数据格式;选择数据子集;跨行和列计算;查找并填充缺失数据;将操作应用于数据中的独立组;将数据重组为不同的形式;合并多个数据集;先进的时间序列功能;通过Matplotlib和Seaborn进行可视化;这些是每个数据科学家都应该具备的基本技能,可以有效地交流从分析中获得的信息。这对于掌握和精通机器学习非常重要,在你的机器学习工作流程(MLpipeline)中也是如此。在决定应用特定的ML算法之前,您需要对数据集执行探索性分析。Matplotlib是使用最广泛的2D可视化库,具有令人眼花缭乱的命令和接口,能够从数据生成高质量的图表,它可以帮助您开始使用Matplotlib。Seaborn是另一个专注于统计绘图的优秀可视化库。机器学习从业者值得学习。Seaborn在Matplotlib的基础上提供了一个API(可以灵活选择默认的绘图样式和颜色),为常见的统计绘图类型定义了简单的高级函数,并且可以无缝对接Pandas库。这是一个很棒的初学者Seaborn教程。Seaborn绘图示例Scikit-learnScikit-learn是必备的最重要的通用Python机器学习包。它支持多种分类、回归和聚类算法,包括支持向量机、随机森林、梯度提升、k-means和DBSCAN。Scikit-learn与NumPy库SciPy库互操作。它通过一致的接口提供一系列监督和非监督算法。Scikit-learn库努力实现一定程度的稳健性和对生产使用的支持。这意味着要深入关注易用性、代码质量、协作、文档和性能等问题。看一下Scikit-learn使用的机器学习词汇的简要介绍。这是另一篇文章,演示了使用Scikit-learn的简单机器学习管道方法。这是另一篇文章,演示了使用Scikit-learn的简单机器学习方法。Scikit-learn背后的亮点Scikit-learn针对机器学习初学者和经验丰富的专业人士,是一个易于使用的软件包。然而,即使是非常有经验的ML从业者也可能不知道这个包背后的所有可以显着提高效率的好东西。我试图在scikit-learn中展示鲜为人知的方法/接口。管道:它可以将多个估计器包装成一个。它之所以有用,是因为在处理数据时通常会有一系列固定的步骤,例如特征选择、归一化和分类。这是深入了解的教程。网格搜索:超参数不是直接在估计器中学习的参数。在scikit-learn中,它们作为参数传递给Estimation类的构造函数。搜索超参数空间以获得最佳交叉验证分数是可能的,也是推荐的。可以通过这种方式优化构建估算器时要估算的任何参数。验证曲线:每个估算器都有其优点和缺点。泛化误差可以分解为偏差、方差和噪声。估计量的偏差是不同训练集的平均误差。估计量的方差表明它对改变训练集有多敏感。噪声是数据的属性。绘制训练集和验证集上各个超参数的分数以确定某些超参数估计器是否过拟合或欠拟合很有用。对于Scikit-learn内置方法,请移至此处。分类数据的单热编码:将输入的分类特征转换为用于分类或预测任务的二进制编码是一种非常常见的数据预处理任务(例如:逻辑回归与索引和文本特征混合)。Scikit-learn提供了强大而简单的方法来实现上述过程。它直接在Pandas数据帧或Numpy数组上运行,因此用户可以轻松地为这些转换编写任何特殊的映射/应用函数。多项式特征生成:对于无数的回归建模任务,考虑输入数据中的非线性特征以增加模型的复杂性是有用的。一种简单而常见的方法是使用多项式特征,它会产生特征的高阶项和交互项。Scikit-learn具有现成的函数,可以根据给定的特征集和用户选择的最高多项式的次数生成高阶交叉项。数据集生成器:Scikit-learn包括各种随机样本生成器,可用于构建给定大小和复杂性的人工数据集。它具有分类、聚类、回归、矩阵分解和各种测试的功能。动手交互式机器学习2014年,Jupyter项目脱胎于IPython项目,并迅速发展成为支持所有主要编程语言的交互式数据科学和科学计算笔记本。毫无疑问,它在帮助数据科学家快速测试、原型化他/她的想法、向同行和开源社区展示结果等方面具有巨大影响。然而,只有当用户可以交互控制模型参数时,学习和测试数据才会真正身临其境并实时(几乎)查看效果。Jupyter中的大多数渲染是静态的,但您需要更多控制,您希望通过简单地滑动鼠标而不是编写循环来更改变量。该怎么办?您可以使用IPython的插件。插件是由浏览器表示的重要python组件,通常作为前端(HTML/JavaScript)渲染通道控件,例如滑块、文本框等。在本文中,我演示了使用简单插件的基本曲线拟合练习。后续文章将进一步扩展到交互领域及其学习技巧。深度学习框架本文涵盖了使用Python探索机器学习的美妙世界的重要技巧。但它不涵盖像TensorFlow、Keras或PyTorch这样的深度学习框架,每个框架都需要深入讨论。您可以在此处阅读有关上述主题的一些精彩文章,但我们稍后可能会专门讨论这些令人惊叹的框架。关于TensorFlow的7篇精彩文章(DatascienceCentral)关于神经网络的Datacamp教程和关于PyTorch的Keras示例AnalyticsVidhya教程一篇摘要文章不可能涵盖所有(即使是一小部分)机器学习主题。但是,我希望本文能激起您的兴趣,并为您提供Python生态系统中已经存在的一些强大框架的明确指示,确保您开始机器学习之旅。
