“吴恩达的Coursera机器学习课程可以完全用Python完成!”
昨天,Reddit论坛的机器学习看板出现这样一条热帖。
可以说,吴恩达(Andrew Ng)的机器学习课程是很多人、尤其是中国学生进入机器学习世界的引路人,被认为是入门机器学习的最好课程。截至目前,有超过80000人在Coursera上完成了这门课的学习。
吴恩达Machine Learning课的评分
不过,这门课推荐使用Matlab/Octave来完成作业,对于不会Matlab/Octave,或者对Matlab/Octave不感兴趣的人来说,要完成作业获取证书可能难度加大。虽然吴恩达强烈推荐大家使用 Octave 来学习机器学习,并且用了完整的一个章节“Octave and Matlab Tutorial”来讲述 Octave 的基本操作。
那么,全部用Python完成是怎么回事?
Reddit用户rsdsdsr的帖子如下:
一句话总结:吴恩达的Coursera ML课程可以用Python完成,而且你不必是Python专家就可以做到。但你需要有很好的数学基础,这将是非常耗时的,而且用Python写作业不会得到证书。” 我最近在Coursera上完成了吴恩达的ML课程,但我没有使用推荐的Matlab/Octave,而是完全用Python来完成。你可以在这里查看我作业的Jupyter notebooks: https://github.com/seddonr/Ng_ML
我绝不是第一个这样做的人,但我认为应该发这个帖子,作为给那些正在考虑参加这门课程,但像我一样对学习Matlab/Octave不感兴趣的人的鼓励,也可以了解用Python学这门课的好处和缺点。 用Python完成这门课程非常耗时,因为这意味着我必须从头开始构建所有东西,而如果你用Matlab/Octave完成课程,则会得到大量预编写的代码。另一方面,这是一次很棒的学习经历,我学到了大量的Python技能。 你不必成为Python专家——在完成这门课程之前,我的Python经验仅限于“使用Python自动化枯燥的东西”,以及学过一些关于NumPy和Matplotlib基础知识的非常简短的教程。但是,你需要有良好的数学基础才能跟上课程——有很多矩阵代数和微积分。
另一个问题是,由于这门课程是为Matlab/Octave设计的,因此无法提交用Python完成的作业,所以你无法对你的作业进行评分或获得证书。证书对我来说并不重要,但如果对你很重要,那么Matlab/Octave可能是更好的选择。 总的来说,我觉得这门课程很有趣,也很享受,我觉得它很好地覆盖了ML的许多主题。 Andrew Ng能以一种愉快的语调把知识点讲得很清楚,他的课也很容易学。如果你决定尝试用Python完成这门课程,祝你好运,我希望这个帖子是令人鼓舞的!
Python作业代码
rsdsdsr公开了他的作业代码:
https://github.com/seddonr/Ng_ML
内容:
Ex1:线性回归
有一个变量和多个变量。
Ex2:逻辑回归
包括正则化。
Ex3: Multi-class 分类和神经网络
使用两种不同的方法识别手写数字:one-vs-all逻辑回归,以及前向传播预训练的神经网络。
Ex4:神经网络学习
构建和训练神经网络,包括反向传播,并将其用于手写数字识别。
Ex5:正则化线性回归和偏差与方差
包括学习曲线和多项式回归。
Ex6:支持向量机
6.1:在一些样本2D数据集上展示scikit-learn SVM,其中包含线性和高斯核函数。
6.2:使用自然语言处理和scikit-learn SVM构建电子邮件垃圾邮件分类器。
Ex7:K-means聚类和主成分分析
7.1:构建k-means聚类算法并将其用于图像压缩。
7.2:构建PCA算法并将其用于图像压缩和可视化。
Ex8:异常检测和推荐系统
8.1:使用多元高斯模型进行异常检测。 Precision, recall, F1 score. 8.2:构建推荐系统并用它来推荐电影。