# BaseML功能详解 我们的传统机器学习(Mechine Learning)有很多算法,但总的来说,可以分为三大类:分类、回归和聚类。BaseML和sklearn不同之处,也就体现于此,sklearn尽管在拟合、预测等函数上对各模块做了统一,但并没有明确指出这样的三大类划分方式。这三类也有着特有的数据输入格式。 文档涉及的部分代码见XEdu帮助文档配套项目集:[https://www.openinnolab.org.cn/pjlab/project?id=64f54348e71e656a521b0cb5&sc=645caab8a8efa334b3f0eb24#public](https://www.openinnolab.org.cn/pjlab/project?id=64f54348e71e656a521b0cb5&sc=645caab8a8efa334b3f0eb24#public) ## 机器学习的基本流程 机器学习实际上分为两个阶段,首先是模型训练过程,即“学习”;然后是模型推理过程,即“应用”。典型的机器学习流程可以分为数据准备、模型搭建、模型训练与评估、模型应用等环节(如下图)。  ### 1.数据准备 数据是描述客观事物或现象的符号记录,可以是数字、文字、图像、声音等形式。机器学习需要很多数据,我们称之为“数据集”。要训练怎样的模型,就要准备怎样的数据。例如要训练温度转换的模型,就要准备很多条类似“摄氏温度和华氏温度对应表”的数据。 ### 2.模型搭建 搭建机器学习的模型,核心工作是实现一个具有特定功能的算法。实现机器学习的算法需要编写程序,难度较大。但好消息是Python有多个机器学习的库,这些库中内置了各种优秀的算法,只要根据需要选择合适的算法,就可以直接完成模型的搭建。 ### 3.模型训练与评估 对于训练好的模型,需要评估一下其推理能力,类似人学习了某个课程后,还要做点单元小测试,看看掌握了多少。对回归任务来说,简单好用的评估指标之一是R平方值,对分类任务来说,一般选择准确率。通过比对推断结果与实际标注结果的差异,可以计算出评估指标。如果推理效果不好,要重新检查数据和模型,再次训练。 ### 4.模型应用 当训练出来的模型的评估表现不错,那就可以保存模型。保存出来的模型文件,可以导入使用或供其他程序使用。其实模型应用环节和传统编程就差别不大了,只要输入一组新数据,就能输出预测结果。 ## 机器学习典型算法一览表 点击对应的`回归`或`分类`,可连接至该算法更详细的说明文档,向右拖动可查看各算法对应的常用参数及其默认值。
| 算法名称 | 适合任务 | 典型任务 | 算法解释 | 常用参数及其默认值 |
|---|---|---|---|---|
| 线性回归(LinearRegression) | 回归 | 适用于预测房价、预测销售额、贷款额度等。 | 线性回归(Linear Regression)线性回归算法的核心思想是找到一条直线,使得这条直线能够最好地代表和预测数据。通常适用于连续值的预测,例如房价、贷款额度等。线性回归就像用直尺在散点图上画一条尽可能穿过所有点的直线,这条直线就能帮我们预测未来的值。 | fit_intercept=True, positive=False |
| 多项式回归算法(Polynomial) | 回归 | 适用于预测房价、预测销售额、贷款额度等。 | 就像是在一条直线上增加更多的弯曲,使得这条线可以更好地贴合数据点。就像用橡皮筋在散点图上拉出一个曲面,这个曲面就能更好地帮助我们预测未来的值。 | degree=2, interaction_only=False, include_bias=True, order='C' |
| 最近邻分类(KNN, K-Nearest Neighbors) | 分类 | 识别数字、判断邮件是否为垃圾邮件、图像识别等。 | 最近邻分类算法核心思想是“近朱者赤”。如果要分析一个新数据点的类别,我们会寻找离它最近的K个邻居,哪类邻居多,就认为新数据点也属于该类。适用于数据集较小等情况,分类结果直观。假设你在一个聚会上不认识任何人,你可能会找和你最相似的人群加入。KNN算法也是这样工作的,它通过查找最相似(最近邻)的数据点来进行分类。 | n_neighbors=5, p=2(距离计算方式) |
| 支持向量机(SVM, Support Vector Machine) | 分类/回归 | 文本分类、图像识别、股票市场分析等。 | 支持向量机算法在一个高次元空间来思考问题,尤其适合处理多特征、非线性和少样本的学习问题。此外,它能够很好地适应干扰数据和异常值带来的模型误差。可用于分类和回归。此处使用支持向量机(SVM)完成分类任务。想象你有两种颜色的球分布在桌子上,SVM就是用一根棍子(在复杂情况下是一张弯曲的板)尽可能分开两种颜色的球。 | kernel='rbf', gamma='scale', tol=0.001, C=1.0 |
| 决策树算法(CART) | 分类/回归 | 适用于客户分级、疾病诊断等。 | 决策树算法将数据看作树的若干片叶子。在每一个树杈位置,决策树都根据特征的不同而划分,将不同的叶子分在不同的枝干上,算法根据最优划分方法,将误差降到最低。该算法解释性强,在解决各种问题时都有良好表现。此处使用决策树分类(CART)完成分类任务。想象你在做一个选择(比如选择餐馆),你可能会根据一系列问题(离家近不近?价格怎么样?)来决定。决策树算法就是通过一系列问题来达到决策的过程。 | criterion='', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None |
| 随机森林算法(RandomForest) | 分类/回归 | 信用评分、医疗分析、股票市场行为等。 | 随机森林算法是一种基于集成学习的算法,通过构建多棵决策树并将它们的预测结果进行集成,从而降低风险。它能够处理多特征数据,并自动选择最相关特征,从而提升模型准确率。如果你问很多朋友一个问题,并根据他们的回答来做决定,那么你就用了随机森林的思想。它建立了很多个决策树,并综合它们的意见来做出最终的决策。 | n_estimators=100, criterion='', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=1.0, bootstrap=True, oob_score=False, warm_start=False |
| 自适应增强算法(AdaBoost) | 分类/回归 | 人脸识别、客户流失预测、分类任务等。 | 自适应增强算法(Adaptive Boosting,AdaBoost)是一种迭代算法,需要经历多个阶段,在每个阶段都增加一个新的智能体帮助判断,直到达到足够小的错误率。这种算法在各领域都表现出超凡的能力。想象一个团队里有很多成员,每个人在第一次做决策时可能不是很准确。但随着时间的推移,团队成员学习如何根据过去的错误来改进,使得整个团队的决策越来越好。 | n_estimators=50, learning_rate=1.0 |
| 多层感知机算法(MLP) | 分类/回归 | 适用于语音识别、手写识别、自然语言处理等。 | 多层感知机算法是一种深度学习算法。它通过模拟大脑的神经元系统,将信号通过突触传递到与之相关的神经元中,如果传递正确,这样的传递就会被强化,从而逐渐构成模型。它可以自动学习到输入特征之间非常复杂的关系。但是,它的训练时间可能会较长,且依赖大量训练数据。想象你在通过多层不同的筛子来过滤沙子,每层筛子的网眼大小不同。沙子在通过每层筛子时都会被进一步细分。多层感知机就是通过多层处理(神经网络层)来从数据中学。 | hidden_layer_sizes=(100,), activation='relu', solver='adam', batch_size='auto', learning_rate_init=0.001, max_iter=200, shuffle=True |
| …… | …… | …… | …… | …… |