一、介绍
《Hello 算法》在GitHub上持续火爆,今年Star数已达80k,项目作者靳宇栋(@krahets),前华为高级算法工程师,上海交通大学硕士,西安交通大学本科,专注于 3D 重建与渲染、3D 生成算法的研究。喜欢在开源社区分享知识,他的教程帮助了很多学习者入门算法,也被很多人称为算法K神。学习《Hello算法》,对机器学习(Machine Learning, ML)的学习是非常有帮助的。
文中示例代码:
def bubble_sort(nums: list[int]):
"""冒泡排序"""
n = len(nums)
# 外循环:未排序区间为 [0, i]
for i in range(n - 1, 0, -1):
# 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端
for j in range(i):
if nums[j] > nums[j + 1]:
# 交换 nums[j] 与 nums[j + 1]
nums[j], nums[j + 1] = nums[j + 1], nums[j]
示例介绍:
1. 基础算法与数据结构的重要性
1)编程能力提升:机器学习需要扎实的编程实现能力(尤其是Python)。《Hello算法》中的代码示例和算法实现训练能帮助你更高效地编写和调试代码。
2)数据结构理解:ML中常涉及数组、链表、树(如决策树)、图(如神经网络中的计算图)等结构。理解这些结构如何存储和操作数据,对优化模型性能很重要。
3)算法思维培养:学习算法能训练逻辑思维,帮助你分析问题的时间复杂度和空间复杂度,这对优化机器学习模型(如减少训练时间、处理大规模数据)很有用。
2. 直接相关的算法领域
1)排序与搜索:数据预处理时常用到排序(如样本采样)和搜索(如最近邻算法)。
2)动态规划与贪心算法:某些优化问题(如强化学习中的策略选择)会用到这类思想。
3)图算法:图神经网络(GNN)和推荐系统中常涉及图的遍历和特征提取。
3. 机器学习还需要哪些额外知识?
算法是ML的基础之一,但机器学习还需要以下核心内容:
1)数学基础:线性代数(矩阵运算)、概率统计(贝叶斯理论)、微积分(梯度下降)。
2)机器学习理论:监督/无监督学习、损失函数、过拟合与正则化等。
3)工具框架:如TensorFlow、PyTorch、Scikit-learn的使用。
4)领域知识:根据应用场景(如CV、NLP)学习特定模型(CNN、Transformer等)。
4. 如何高效结合两者学习?
1)初级阶段:先掌握《Hello算法》中的基础,同时学习Python和数学基础。
2)中级阶段:通过ML实战项目(如Kaggle竞赛)应用算法知识,例如用哈希表优化特征存储、用树结构实现决策树。
3)高级阶段:深入研究ML中的优化算法(如梯度下降、遗传算法),此时算法书中的复杂度分析能力会发挥作用。
5. 是否建议优先学习这本书?
如果你是初学者:建议先学《Hello算法》,打好编程和算法基础,再过渡到ML。
如果你已有编程基础:可跳过部分内容,直接学习ML,但遇到工程问题时回头补算法知识(如模型部署时的性能优化)。
二、总结
《Hello算法》能帮助你建立扎实的编程和算法基础,这对机器学习工程实现和优化至关重要,但机器学习还需要结合数学、统计学等领域知识。建议将算法学习作为长期基础,同时逐步深入ML核心理论,并通过项目实践融会贯通。
《Hello 算法——python语言》2023年 PDF下载
链接: https://pan.baidu.com/s/1ryH7D89i6mVVKDDCV0MjtA?pwd=h99b 提取码: h99b
网页版学习链接:Hello 算法