对于机器学习有兴趣,不少人应该会先从 Andrew Ng ( 吴恩达 ) 的机器学习课程开始,但是吴恩达的课程是使用
octave 这个工具当作练习。这个 github 项目包含使用 Python 实现流行机器学习算法的范例,并解释了其背后的
数学原理。 每个算法都有交互式的 Jupyter Notebook 示范,可以让你玩训练数据、算法配置,并立即在浏览器中
检视结果、图表和预测。 在大多数情况下,这些解释都是基于 Andrew Ng 的这门伟大的机器学习课程。
这个储存库的目的不是通过使用第三方程式库”一行程序”来实现机器学习算法,而是从头开始实践这些算法,并更好
地理解每个算法背后的数学原理。
https://softnshare.com/github-machine-learning-octave/
监督式学习 ( Supervised Learning )
在监督式学习,我们有一组作为输入的训练资料和一组标签或作为输出的每个训练集的”正确答案”。 然后我们训练我们的模型(机器学习演算法参数)来正确地对映输入到输出(做正确的预测)。 最终的目的是找到这样的模型参数,将成功地继续正确的输入→输出对映(预测) ,甚至为新的输入例子。
回归 Regression
在回归问题中,我们做真实值的预测。 基本上,我们尝试沿着训练样本绘制一条线 / 平面 / n 维平面( line/plane/n-dimensional plane)。
使用范例: 股票价格预测,销售分析,任何数字的相依等。
Math | Linear Regression-进一步阅读的理论及连结
Code | Linear Regression-实现范例
Demo | 单变数线性回归 Univariate Linear Regression-使用 economy GDP 来预测城市快乐指数
Demo | 多变数线性回归 Multivariate Linear Regression-使用 economy GDP 和 freedom index 来预测城市快乐指数
Demo | 非线性回归 Non-linear Regression-使用线性回归多项式及正弦曲线特征来预测非线性相关性
分类 Classification
在分类问题中,我们根据一定的特征分割输入范例。
使用范例: 垃圾邮件过滤器,语言侦测,寻找类似的文件,手写字母识别等。
逻辑回归 Logistic Regression
- Math | Logistic Regressio-进一步阅读的理论及连结
- Code | Logistic Regression-实现范例
- Demo | Logistic Regression (Linear Boundary)-根据 petal_length 和petal_width 预测虹膜花类
- Demo | Logistic Regression (Non-Linear Boundary)-基于param_1和param_2 预测微晶片有效性
- Demo | Multivariate Logistic Regression | MNIST-识别 28×28 像素影像的手写数字。
- Demo | Multivariate Logistic Regression | Fashion MNIST-识别28×28像素影像的衣服类型。
非监督式学习 Unsupervised Learning
非监督式学习是机器学习的一个分支,它从未被标记、分类或分类的测试资料中学习。 非监督式学习不是对反馈做出反应,而是根据每个新资料中是否存在这些共同特性来识别资料中的共同性,并根据这些共同性的存在或不存在做出反应。
聚类 Clustering
在聚类问题中,我们根据未知特征对训练样本进行分割。 由演算法本身决定用什么特征进行分割。
使用范例: 市场划分分析,社群网路分析,组织运算聚类,天文资料分析,影像压缩,等等。
K-means Algorithm
- Math | K-means Algorithm-进一步阅读的理论及连结
- Code | K-means Algorithm-实现的范例
- Demo | K-means Algorithm-根据 petal_length 和 petal_width 将虹膜花聚类
异常检测 Anomaly Detection
异常检测指的是识别那些引起怀疑的罕见物品、事件或观察异常检测,它们与大多数资料大相径庭。
使用范例: 入侵侦测、诈欺侦测、系统健康监控、从资料集中删除异常资料等。
利用高斯分布 ( Gaussian Distribution ) 进行异常检测
- Math | Anomaly Detection using Gaussian Distribution-进一步阅读的理论及连结
- Code | Anomaly Detection using Gaussian Distribution-实现的范例
- Demo | Anomaly Detection-寻找伺服器操作参数(如 latency 和 threshold)中的异常
神经网路 Neural Network (NN)
神经网路本身不是一个演算法,而是一个框架,将许多不同的机器学习演算法一起运作和处理复杂的资料输入。
使用范例: 作为所有其它演算法的一般替代,影像辨识,语音辨识,影像处理(应用特定风格) ,语言翻译等。
多层感知器 Multilayer Perceptron (MLP)
- Math | Multilayer Perceptron-进一步阅读的理论及连结
- Code | Multilayer Perceptron-实现范例
- Demo | Multilayer Perceptron | MNIST – 识别 28×28 像素影像的手写数字。
- Demo | Multilayer Perceptron | Fashion MNIST-识别28×28像素影像的衣服类型。
机器学习地图
这张机器学习地图的来源是这篇精彩的部落格文章
开始前的准备
确保在机器上安装了 Python。
您可能希望使用 venv 标准的 Python 程式库来建立虚拟环境,并从本地专案目录中安装和使用 Python、 pip 和所有相依套件服务,以避免搞乱系统范围的套件及其版本。
安装相依套件
通过执行以下命令安装专案所需的所有依赖套件:
pip install -r requirements.txt
在本地端启动 Jupyter
专案中的所有示范都可以直接在浏览器中执行,而不需要在本地安装 Jupyter。 但是如果你想在本地启动 Jupyter Notebook,你可以在专案的根资料夹中执行以下命令:
jupyter notebook
在这之后,你可以通过 http: / / localhost: 8888 访问 Jupyter Notebook。
远端启动 Jupyter
每个演算法部分包含到 Jupyter NBViewer 的示范连结。 这是一款快速的 Jupyter Notebooks 线上预览器,你可以直接在浏览器中看到示范的程式码、图表和资料,而不需要在本地安装任何东西。 如果你想改变程式码和展示的笔记本实验,你需要启动在 Binder 的笔记本。 你可以简单地点选 NBViewer 右上角的”Execute on Binder”连结。
资料集 Datasets
用于 Jupyter Notebook 演示的资料集列表可以在 data 资料夹中找到。