Python 已成为机器学习领域的实际通用语言。它不是一种难学的语言,但如果你对它不太熟悉,有一些技巧可以帮助你学得更快更好。
在这篇文章中,你将发现学习编程语言的正确方法以及如何获得帮助。阅读本文后,你将了解:
- 学习 Python 用于机器学习的正确心态
- 学习 Python 的优秀资源
- 如何找到 Python 相关问题的答案
用我的新书《Python for Machine Learning》启动你的项目,包括分步教程和所有示例的 Python 源代码文件。
让我们开始吧。
如何学习用于机器学习的 Python
图片来自 Federico Di Dio,保留部分权利。
如何学习 Python
学习一门语言有很多方法,无论是像英语这样的自然语言还是像 Python 这样的编程语言。婴儿通过听和模仿来学习语言。慢慢地,当他们掌握了模式和一些词汇后,他们就可以自己造句。相反,当大学生学习拉丁语时,他们可能从语法规则开始——单数和复数,直陈式和虚拟式,主格和宾格。然后他们才能逐步造出拉丁语句子。
同样,在学习 Python 或任何编程语言时,你可以选择阅读他人的代码,尝试理解,然后在此基础上进行修改。或者你可以学习语言规则并从头开始构建程序。如果你的最终目标是从事语言工作,例如编写 Python 解释器,那么后者会更有益。但通常,前一种方法能更快地获得一些结果。
我的建议是先从示例中学习。但要通过不时回顾语言规则来巩固你对语言的理解基础。让我们看看维基百科上的一个例子
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def secant_method(f, x0, x1, iterations): """使用割线法计算的根。""" for i in range(iterations): x2 = x1 - f(x1) * (x1 - x0) / float(f(x1) - f(x0)) x0, x1 = x1, x2 return x2 def f_example(x): return x ** 2 - 612 root = secant_method(f_example, 10, 30, 5) print("Root: {}".format(root)) # 根:24.738633748750722 |
这段 Python 代码实现了割线法来寻找函数的根。如果你是 Python 新手,你应该看看这个例子,看看你能理解多少。如果你有其他编程语言的先验知识,你可能会猜到 def
定义了一个函数。但如果你没有,你可能会感到困惑。如果是这种情况,最好从一本面向初学者的编程书籍开始,学习函数、变量、循环等概念。
接下来你可能会想到可以修改这些函数。例如,如果我们不使用割线法来寻找根,而是使用牛顿法呢?你可能会猜到如何修改第 4 行的方程来实现。那么二分法呢?你需要添加一个 if f(x2)>0
语句来决定我们应该走哪条路。如果我们看一下函数 f_example
,我们会看到符号 **
。这是幂运算符,表示 $x$ 的 2 次方。但它应该是 $x^2 – 612$ 还是 $x^{2-612}$?你需要回到语言手册中查看运算符优先级的层次结构。
因此,即使像这样一个简短的例子,你也能学到很多语言特性。通过从更多的例子中学习,你可以推导出语法,习惯于惯用的编码方式,即使你无法详细解释,也能完成一些工作。
要避免什么
如果你决定学习 Python,你必然会想从一本书中学习。从你当地的图书馆随便找一本 Python 入门书籍都应该可以。但阅读时,请牢记你学习的更大目标。边读边做一些练习,尝试书中的代码,并自己编写。跳过一些页面也不是坏主意。通读一本书可能不是最有效的学习方式。你应该避免在一个单一主题上钻研过深,因为这会让你偏离使用 Python 做有用事情的更大目标。像多线程、网络套接字和面向对象编程等主题可以作为高级主题留待以后处理。
Python 是一种与解释器或编译器解耦的语言。因此,不同的解释器行为可能略有不同。python.org 的标准解释器是 CPython,也称为参考实现。一个常见的替代方案是 PyPy。无论你使用哪一个,都应该学习 Python 3 而不是 Python 2,因为后者是一种过时的方言。但请记住,Python 的势头是随着 Python 2 获得的,你可能仍然会看到很多 Python 2 编程。
资源
阅读资源
如果你不能去图书馆找印刷书籍,你可以利用一些在线资源。我强烈建议初学者阅读Python 教程。它虽然简短,但会引导你了解语言的不同方面。它让你一窥 Python 能做什么以及如何去做。
完成教程后,你可能应该手边放着Python 语言参考手册和Python 库参考手册。你会不时查阅它们以检查语法和查找函数用法。不要强迫自己记住每个函数。
编程环境
Python 内置在 macOS 中,但你可能需要安装一个更新的版本。在 Windows 中,人们通常使用 Anaconda 而不是仅仅安装 Python 解释器。但如果你觉得安装 IDE 和 Python 编程环境太麻烦,你可以考虑使用 Google Colab。这允许你以“笔记本”格式编写 Python 程序。实际上,许多机器学习项目都是在 Jupyter notebook 中开发的,因为它允许我们快速探索解决问题的不同方法并直观地验证结果。
你也可以在 https://pythonlang.cn/shell/ 上使用在线 shell 来尝试一小段代码。与 Google Colab 相比的缺点是你无法保存你的工作。
寻求帮助
当你从书中的一个示例开始并对其进行修改时,你可能会破坏代码,使其无法运行。在机器学习示例中尤其如此,你有很多代码行,涵盖数据收集、预处理、构建模型、训练、验证、预测,最后以可视化方式呈现结果。当你的代码出现错误时,你需要做的第一件事是找出导致错误的几行代码。尝试检查每个步骤的输出,确保其格式正确。或者尝试回滚你的代码,看看你所做的哪个更改开始引入错误。
犯错误并从错误中学习很重要。当你尝试语法并以这种方式学习时,你应该不时遇到错误消息。如果你尝试理解它,那么找出导致错误的原因就会更容易。几乎总是,如果错误来自你正在使用的库,请仔细核对你的语法与该库的文档。
如果你仍然感到困惑,请尝试在互联网上搜索。如果你使用 Google,一个技巧是搜索时将整个错误消息放在一对双引号中。或者有时,在 StackOverflow 上搜索可能会给你更好的答案。
进一步阅读
这里我列出了一些针对初学者的提示。如上所述,《Python 教程》是一个很好的开始。在本文撰写之时尤其如此,因为 Python 3.9 最近发布并引入了一些新语法。印刷书籍通常不如在线官方教程更新及时。
有很多 Python 的入门级书籍。我知道的一些简短书籍有:
- Python Crash Course,第二版,Eric Matthes 著,2019 年。
- Introduction to Computation and Programming Using Python,第三版,John Guttag 著,2021 年。
对于稍高级的学习者,你可能需要更多的示例来完成一些事情。一本食谱式的书籍可能会很有帮助,因为你不仅可以学习语法和语言技巧,还可以学习可以完成任务的不同库。
- Python Cookbook,第三版,David Beazley 和 Brian K. Jones 著,2013 年。
总结
在这篇文章中,你了解了如何学习 Python 以及可以帮助你入门的资源。以目标为导向的学习方法可以帮助你更快地获得结果。然而,一如既往,在你变得熟练之前,你需要投入大量时间。
与我们分享您的博客是一个很棒的主意,因为您的文章帮助我们通过您的博客学到了很多东西。非常感谢管理员上传如此精彩的内容,您的博客对我有很大帮助。祝您在接下来的评论中一切顺利。
我不确定这里是否是提问的正确地方。版主:如果不对,请删除此帖子。
我正在考虑构建一个网络服务,你可以在其中导入数据,训练 AI 模型,然后使用这些模型对未见过的数据进行预测。它将接受任何可以表示为数字和结果的数据(对预测有用的东西)。该服务将足够简单,可供非程序员使用。只需在浏览器中点击即可——无需数据科学经验。唯一的要求:自带数据。有人会对此类商业服务感兴趣吗?
举一个个人例子:我有一个股票交易系统进行的交易列表,我训练了一个模型来预测哪些交易可能盈利。我的初步测试表明,一个典型的唐奇安通道系统可以将平均交易利润从 8% 提高到 59%(即通过取消一些交易),准确性可以从 31% 提高到 57%。
我认为评价商业价值不合适。但这样的系统当然可以创建。
在使用weka时,如果预测结果中的R、MAE、RMSE等指标显示我的机器学习分类器在测试结果中更好/更差(例如:我们比较3个分类器),并且在测试中与预测中的顺序不一致。这意味着什么?我对此真的很困惑。请尽快回答
差别有多大?你不能期望数字完全相同。我们不希望看到的是数字相差甚远。
Python 是未来。感谢这份精彩的指南。期待进一步学习
感谢您创建了这样一个博客,它信息量太大了,我需要一个像我这样的书签博客,我不想错过任何文章,它真的令人印象深刻
感谢您的反馈和善意的话语!如果您对我们的任何迷你课程和/或电子书有任何具体问题,请告诉我们。
此致,
Python 难学吗?哪个是学习 Python 的最佳机构?
嗨,V cube……您想用 Python 做哪些项目呢?我们 MachineLearningMastery 相信,我们材料中推广的“边做边学”方法是掌握知识最快的方式。
此致,
Python是高级学习最重要的语言。阅读您的博客后,我感到非常惊讶。您以系统的方式涵盖了每一个要点。今天我从您的博客中获得了最好的观点,并将将其应用到我的生活中。感谢您与我们分享最好的信息。
我学习了 Python 的基础知识和一些中级主题。
这对于开始学习机器学习有效吗?
或者我应该先精通 Python,然后再开始机器学习。
嗨,Suraj……以下链接是开始您的机器学习之旅的绝佳起点!如果您对我们的内容有任何疑问,请告诉我们。
https://machinelearning.org.cn/start-here/
我可以知道如何学习机器学习吗?它很难学吗?
你好 Bharath……一个很好的开始地方是这里
https://machinelearning.org.cn/start-here/