谷歌的自动驾驶汽车和机器人受到了广泛关注,但该公司真正的未来在于机器学习,这项技术使计算机变得更智能、更个性化。

埃里克·施密特(谷歌董事长)

我们可能生活在人类历史上最具决定性的时期。计算从大型机转移到个人电脑再到云的时期。但决定它的不是已经发生的事情,而是未来几年将发生的事情。对于像我这样的人来说,这段时期令人兴奋和着迷的是随着计算的发展而出现的各种工具、技术和机器学习算法的民主化。欢迎来到数据科学的世界!

如今,作为一名数据科学家,我可以每小时花费几美元来构建具有复杂算法的数据处理机器。但到达这里并不容易!我也曾经历过黑暗的日子和黑夜。

学习目标

  • 主要关注常用的机器学习技术和算法。
  • 涵盖的算法 – 线性回归、逻辑回归、朴素贝叶斯、kNN、随机森林等。
  • 学习 R 和 Python 中机器学习算法的理论和实现。

您是初学者,正在寻找一个地方来开始您的数据科学之旅并学习机器学习模型吗?呈现一系列全面的课程,充满知识和数据科学学习,专为您从头开始学习数据科学(使用Python)而策划:

谁可以从本指南中受益最多?

我今天发布的内容可能是我创建过的最有价值的指南。

创建本指南的目的是简化世界各地有抱负的数据科学家和机器学习(人工智能的一部分)爱好者的旅程。通过本指南,我将使您能够解决机器学习问题并从中获得经验。 我提供对各种机器学习算法以及运行它们的 R 和 Python 代码的高级理解。 这些应该足以弄脏你的手了。您还可以查看我们的机器学习课程。

机器学习算法的要点及其在 R 和 Python 中的实现

我故意跳过了这些技术和人工神经网络背后的统计数据,因为您最初不需要了解它们。因此,如果您正在寻求对这些算法的统计理解,您应该去其他地方寻找。但是,如果您想准备好开始构建机器学习项目,那么您将会大饱口福。

3 种机器学习算法

监督学习算法

怎么运行的: 该算法由目标/结果变量(或因变量)组成,该变量是根据给定的一组预测变量(自变量)进行预测的。使用这组变量,我们生成一个将输入数据映射到所需输出的函数。训练过程持续进行,直到模型在训练数据上达到所需的准确度。监督学习的例子:回归、决策树、随机森林、KNN、逻辑回归等。

无监督学习算法

怎么运行的: 在这个算法中,我们没有任何目标或结果变量来预测/估计(称为未标记数据)。它用于推荐系统或对不同群体中的人群进行聚类。聚类算法广泛用于将客户分为不同的组以进行特定的干预。无监督学习的例子:Apriori 算法、K 均值聚类。

强化学习算法

怎么运行的: 使用该算法,机器被训练以做出特定决策。机器暴露在一个环境中,通过反复试验不断自我训练。该机器从过去的经验中学习,并尝试获取最佳的知识以做出准确的业务决策。强化学习示例:马尔可夫决策过程

十大常见机器学习算法列表

以下是常用机器学习算法的列表。这些算法可以应用于几乎任何数据问题:

  1. 线性回归
  2. 逻辑回归
  3. 决策树
  4. 支持向量机
  5. 朴素贝叶斯
  6. kNN
  7. K-均值
  8. 随机森林
  9. 降维算法
  10. 梯度提升算法
    1. 胶质母细胞瘤
    2. XGBoost
    3. 光GBM
    4. 猫助推器

1. 线性回归

它用于根据连续变量估计实际价值(房屋成本、通话次数、总销售额等)。在这里,我们通过拟合最佳线来建立自变量和因变量之间的关系。这条最佳拟合线称为回归线,由线性方程 Y= a*X + b 表示。

理解线性回归的最好方法是重温童年的经历。假设你要求一个五年级的孩子通过增加体重顺序来安排他班上的人,而不询问他们的体重!你觉得孩子会做什么?他/她可能会观察(视觉分析)人的身高和体型,并使用这些可见参数的组合来安排他们。这就是现实生活中的线性回归!孩子实际上已经发现身高和体格与体重之间存在某种关系,就像上面的等式一样。

在这个等式中:

  • Y——因变量
  • a – 坡度
  • X – 自变量
  • b – 拦截

这些系数 a 和 b 是根据最小化数据点与回归线之间距离的平方差之和而得出的。

看下面的例子。这里我们已经确定了具有线性方程的最佳拟合线 y=0.2811x+13.9。现在使用这个方程,我们可以找到体重,知道一个人的身高。

线性回归主要有两种类型:简单线性回归和多元线性回归。简单线性回归的特征在于一个自变量。并且,多元线性回归(顾名思义)的特点是有多个(超过 1 个)自变量。在寻找最佳拟合线时,您可以拟合多项式或曲线回归。这些被称为多项式或曲线回归。

这是一个编码窗口,可以尝试您的手并构建您自己的线性回归模型:

Python:

R代码:

#加载训练和测试数据集 #识别特征和响应变量,值必须是数字和numpy数组 x_train <- input_variables_values_training_datasets y_train <- target_variables_values_training_datasets x_test <- input_variables_values_test_datasets x <- cbind(x_train,y_train) # 使用训练集和检查分数 线性 <- lm(y_train ~ ., data = x) 摘要(线性) #预测输出 预测= 预测(线性,x_test)

2. 逻辑回归

不要被它的名字迷惑了!它是一种分类算法,而不是回归算法。它用于根据给定的一组自变量估计离散值(二进制值,如 0/1、是/否、真/假)。简而言之,它通过将数据拟合到逻辑函数来预测事件发生的概率。因此,它也被称为 逻辑回归。由于它预测概率,因此其输出值介于 0 和 1 之间(如预期)。

再次,让我们尝试通过一个简单的例子来理解这一点。

假设你的朋友给你一个难题要你解决。只有两种结果场景——要么解决,要么不解决。现在想象一下,你正在接受各种各样的谜题/测验,试图了解你擅长哪些科目。这项研究的结果是这样的——如果给你一道基于三角学的十年级问题,你有 70% 的可能解决它。另一方面,如果是五年级的历史题,得到答案的概率只有30%。这就是逻辑回归为您提供的。

谈到数学,结果的对数赔率被建模为预测变量的线性组合。

赔率= p/ (1-p) = 事件发生概率/事件不发生概率 ln(赔率) = ln(p/(1-p)) logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk

上面,p 是感兴趣特征存在的概率。它选择的参数可以最大化观察样本值的可能性,而不是最小化误差平方和(如普通回归)。

现在,您可能会问,为什么要记录日志?为了简单起见,我们只能说这是复制阶跃函数的最佳数学方法之一。我可以详细说明,但这超出了本文的目的。

在这里用 Python 构建您自己的逻辑回归模型并检查准确性:

R代码:

x <- cbind(x_train,y_train) # 使用训练集训练模型并检查分数logistic <- glm(y_train ~ ., data = x,family='binomial') Summary(logistic) #预测输出预测=预测(逻辑,x_测试)

此外…

为了改进模型,可以尝试许多不同的步骤:

  • 包括交互项
  • 删除特征
  • 使用非线性模型

3. 决策树

这是我最喜欢的算法之一,而且我经常使用它。它是一种监督学习算法,主要用于分类问题。令人惊讶的是,它适用于分类因变量和连续因变量。在此算法中,我们将总体分为两个或多个同质集合。这是根据最重要的属性/自变量来完成的,以尽可能形成不同的组。有关更多详细信息,您可以阅读简化决策树。

在上图中,您可以看到人口根据多个属性被分为四个不同的组,以确定“他们是否会玩”。为了将人口分成不同的异质群体,它使用了各种技术,如基尼系数、信息增益、卡方和熵。

了解决策树如何工作的最佳方法是玩 Jezzball——微软的一款经典游戏(下图)。本质上,你有一个带有移动墙壁的房间,你需要创建墙壁,以便在没有球的情况下清除最大区域。

因此,每次用墙分隔房间时,您都在尝试在同一个房间内创建 2 个不同的群体。决策树以非常相似的方式工作,将总体划分为尽可能不同的组。

让我们亲自动手,用 Python 编写我们自己的决策树!

R代码:

库(rpart) x <- cbind(x_train,y_train) # 生长树 fit <- rpart(y_train ~ ., data = x,method="class") 摘要(fit) #预测输出 预测= 预测(fit,x_test)

4.SVM(支持向量机)

它是一种分类方法。在 SVM 算法中,我们将每个数据项绘制为 n 维空间中的一个点(其中 n 是拥有的特征数量),每个特征的值是特定坐标的值。

例如,如果我们只有两个特征,例如一个人的身高和头发长度,我们首先在二维空间中绘制这两个变量,其中每个点都有两个坐标(这些坐标称为 支持向量

现在,我们将找到一些 线 将数据划分为两个不同分类的数据组。这条线使得到两组中每组中最近点的距离将是最远的。如果变量较多,则使用超平面来分隔类别。

在上面所示的示例中,将数据分为两个不同分类组的线是 黑色的 线 因为最近的两个点距直线最远。这条线是我们的分类器。然后,根据测试数据落在线两侧的位置,我们可以将新数据分类为哪个类别。

将此算法视为在 n 维空间中玩 JezzBall。游戏中的调整是:

  • 您可以以任何角度绘制线条/平面(而不是像经典游戏中那样仅水平或垂直)
  • 游戏的目标是将不同颜色的球分隔在不同的房间中。
  • 而且球没有移动。

通过此编码窗口尝试用 Python 设计 SVM 模型:

R代码:

库(e1071) x <- cbind(x_train,y_train) # 拟合模型 fit <-svm(y_train ~ ., data = x) 摘要(fit) #预测输出 预测= 预测(fit,x_test)

5.朴素贝叶斯

它是一种基于贝叶斯定理的分类技术,假设预测变量之间独立。简而言之,朴素贝叶斯分类器假设类中特定特征的存在与任何其他特征的存在无关。例如,如果水果是红色、圆形且直径约为 3 英寸,则可以将其视为苹果。即使这些特征相互依赖或依赖于其他特征的存在,朴素贝叶斯分类器也会考虑所有这些属性,以独立地影响该水果是苹果的概率。

朴素贝叶斯模型易于构建,对于非常大的数据集特别有用。除了简单性之外,朴素贝叶斯的性能甚至优于高度复杂的分类方法。

贝叶斯定理提供了一种根据 P(c)、P(x) 和 P(x|c) 计算后验概率 P(c|x) 的方法。看下面的等式:

这里,

  • c|x) 是后验概率 班级目标)给定 预测器属性)。
  • C) 是先验概率 班级
  • x|c) 是可能性,即概率 预测器 鉴于 班级
  • X) 是先验概率 预测器

例子: 让我们用一个例子来理解它。下面是天气的训练数据集和相应的目标变量“玩”。现在,我们需要根据天气条件对玩家是否玩进行分类。让我们按照以下步骤来执行它。

步骤1:将数据集转换为频数表。

步骤 2:通过查找概率(如阴天概率 = 0.29 和播放概率为 0.64)来创建似然表。

步骤 3:现在,使用朴素贝叶斯方程计算每个类别的后验概率。后验概率最高的类别是预测的结果。

问题: 如果天气晴朗,玩家将付费。这个说法正确吗?

我们可以使用上面讨论的方法来解决它,所以 P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny)

这里我们有 P(晴天 | 是)= 3/9 = 0.33,P(晴天)= 5/14 = 0.36,P(是)= 9/14 = 0.64

现在,P(Yes | Sunny) = 0.33 * 0.64 / 0.36 = 0.60,概率较高。

朴素贝叶斯使用类似的方法根据各种属性来预测不同类别的概率。该算法主要用于文本分类和具有多个类别的问题。

Python 中朴素贝叶斯分类模型的代码:

R代码:

库(e1071) x <- cbind(x_train,y_train) # 拟合模型 fit <-naiveBayes(y_train ~ ., data = x) 摘要(fit) #预测输出 预测= 预测(fit,x_test)

6. kNN(k-最近邻)

它可用于分类和回归问题。但在业界,它在分类问题上的应用更为广泛。 K 最近邻是一种简单的算法,它存储所有可用案例并通过其 k 个邻居的多数投票对新案例进行分类。分配给该类的情况在通过距离函数测量的 K 个最近邻中最常见。

这些距离函数可以是欧几里得距离、曼哈顿距离、闵可夫斯基距离和汉明距离。前三个函数用于连续函数,第四个函数(汉明)用于分类变量。如果 K = 1,则该案例将简单地分配给其最近邻居的类别。有时,在执行 kNN 建模时选择 K 是一个挑战。

KNN 可以很容易地映射到我们的现实生活中。如果你想了解一个你没有任何信息的人,你可能想了解他/她的亲密朋友和他所活动的圈子,并获取他/她的信息!

选择 kNN 之前需要考虑的事项:

  • KNN 的计算成本很高
  • 变量应该标准化,否则较高范围的变量可能会使其产生偏差
  • 在使用 kNN 之前更多地进行预处理阶段,例如异常值、噪声消除

Python代码:

R代码:

library(knn) x <- cbind(x_train,y_train) # 拟合模型 fit <-knn(y_train ~ ., data = x,k=5) summarise(fit) #预测输出预测 = 预测(fit,x_test)

7.K-均值

它是一种解决聚类问题的无监督算法。其过程遵循一种简单易行的方法,通过一定数量的簇(假设 k 个簇)对给定数据集进行分类。集群内的数据点对于对等组来说是同质的和异质的。

还记得从墨迹中找出形状吗? k 的意思与此活动有些相似。您可以通过观察形状和分布来破译存在多少个不同的簇/种群!

K-means如何形成簇:

  1. K 均值为每个簇选取 k 个点(称为质心)。
  2. 每个数据点形成一个具有最近质心的簇,即 k 个簇。
  3. 根据现有集群成员查找每个集群的质心。这里我们有新的质心。
  4. 当我们有了新的质心时,重复步骤 2 和 3。找到每个数据点与新质心的最近距离,并与新的 k 簇相关联。重复此过程直到发生收敛,即质心不改变。

K值的确定方法:

在 K 均值中,我们有簇,每个簇都有自己的质心。质心与簇内数据点之间差值的平方和构成该簇的平方值之和。另外,当将所有簇的平方值之和相加时,其成为簇解的平方值之和内的总和。

我们知道,随着簇数量的增加,该值不断减小,但如果绘制结果,您可能会发现平方距离之和在达到 k 的某个值时急剧减小,然后此后减小得更慢。在这里,我们可以找到最佳的簇数。

Python代码:

R代码:

库(簇) fit <- kmeans(X, 3) # 5 簇解决方案

8. 随机森林

随机森林是决策树集成学习的商标术语。在随机森林中,我们有决策树的集合(也称为“森林”)。为了根据属性对新对象进行分类,每棵树都会给出一个分类,我们说树为该类“投票”。森林选择得票最多的分类(在森林中的所有树木中)。

每棵树的种植和生长如下:

  1. 如果训练集中的案例数为 N,则随机抽取 N 个案例的样本,但 有更换。该样本将作为种植树的训练集。
  2. 如果有 M 个输入变量,则指定一个数字 m<
  3. 每棵树都尽可能地生长。没有修剪。

有关该算法的更多详细信息,与决策树和调整模型参数相比,我建议您阅读以下文章:

Python代码:

R代码:

库(randomForest) x <- cbind(x_train,y_train) # 拟合模型 fit <- randomForest(Species ~ ., x,ntree=500) 摘要(fit) #预测输出 预测= 预测(fit,x_test)

9. 降维算法

在过去的 4-5 年里,每个可能阶段的数据捕获量都呈指数级增长。企业/政府机构/研究组织不仅提出了新的来源,而且还捕获了非常详细的数据。

例如,电子商务公司正在捕获有关客户的更多详细信息,例如他们的人口统计数据、网络爬行历史记录、他们喜欢或不喜欢的内容、购买历史记录、反馈等等,以便比最近的杂货店店主给予他们更多的个性化关注。

作为数据科学家,我们提供的数据还包含许多特征,这听起来有利于构建良好的鲁棒模型,但存在挑战。您如何从 1000 个或 2000 个变量中识别出高度显着的变量?在这种情况下,降维算法以及各种其他算法(例如决策树、随机森林、PCA(主成分分析)、因子分析、基于相关矩阵的身份、缺失值比率等)可以帮助我们。

要了解更多关于这些算法的信息,您可以阅读《降维技术入门指南》。

Python代码:

R代码:

库(统计) pca <- princomp(train,cor = TRUE) train_reduced <- 预测(pca,train) test_reduced <- 预测(pca,测试)

10.梯度提升算法

现在,让我们看看 4 种最常用的梯度增强算法。

胶质母细胞瘤

GBM 是一种增强算法,当我们处理大量数据以进行高预测能力的预测时使用。 Boosting 实际上是学习算法的集合,它结合了多个基本估计器的预测,以提高单个估计器的鲁棒性。它结合多个弱或平均预测器来构建强预测器。这些增强算法在 Kaggle、AV Hackathon 和 CrowdAnalytix 等数据科学竞赛中总是表现良好。

Python代码:

R代码:

library(caret) x <- cbind(x_train,y_train) # 拟合模型 fitControl <- trainControl( method = "repeatedcv", number = 4, Repeats = 4) fit <- train(y ~ ., data = x, method = “gbm”,trControl = fitControl,verbose = FALSE)预测=预测(fit,x_test,type =“prob”)[,2]

GradientBoostingClassifier 和 Random Forest 是两种不同的 boosting 树分类器,经常有人问这两种算法之间的区别。

XGBoost

另一种经典的梯度提升算法是 XGBoost,它是一些 Kaggle 比赛中胜败的决定性选择。它具有极高的预测能力,使其成为事件准确性的最佳选择。它同时拥有线性模型和树学习算法,使得该算法比现有的梯度增强技术快近 10 倍。

XGBoost 最有趣的事情之一是它也称为正则化增强技术。这有助于减少过度拟合建模,并为 Scala、Java、R、Python、Julia 和 C++ 等一系列语言提供大量支持。

支持包括各种目标函数,包括回归、分类和排名。支持在包括 GCE、AWS、Azure 和 Yarn 集群的许多机器上进行分布式和广泛的训练。 XGBoost 还可以与 Spark、Flink 和其他云数据流系统集成,并在提升过程的每次迭代中内置交叉验证。

Python代码:

R代码:

require(caret) x <- cbind(x_train,y_train) # 拟合模型 TrainControl <- trainControl( method = "repeatedcv", number = 10, Repeats = 4) model<- train(y ~ ., data = x, method = "xgbLinear", trControl = TrainControl,verbose = FALSE) OR model<- train(y ~ ., data = x, method = "xgbTree", trControl = TrainControl,verbose = FALSE) 预测 <- 预测(model, x_test)

光GBM

LightGBM 是一个使用基于树的学习算法的梯度提升框架。它被设计为分布式且高效的,具有以下优点:

  • 训练速度更快,效率更高
  • 降低内存使用量
  • 更高的准确性
  • 支持并行和 GPU 学习
  • 能够处理大规模数据

该框架是一种快速、高性能的梯度提升框架,基于决策树算法,用于排名、分类和许多其他机器学习任务。它是在微软的分布式机器学习工具包项目下开发的。

由于 LightGBM 基于决策树算法,因此它以最佳拟合方式按叶方式分割树,而其他 boosting 算法则按深度或级别而不是叶方式分割树。因此,当在 Light GBM 中的同一叶子节点上生长时,leaf-wise 算法可以比 level-wise 算法减少更多的损失,从而获得更好的精度,这是任何现有的 boosting 算法都很少能达到的。

而且,它的速度非常快,因此得名“光”。

Python代码:

data = np.random.rand(500, 10) # 500个实体,每个实体包含10个特征 label = np.random.randint(2, size=500) # 二进制目标 train_data = lgb.Dataset(data, label=label) test_data = train_data.create_valid('test.svm') param = {'num_leaves':31, 'num_trees':100, 'objective':'binary'} param['metric'] = 'auc' num_round = 10 bst = lgb .train(param, train_data, num_round, valid_sets=[test_data]) bst.save_model('model.txt') # 7 个实体,每个包含 10 个特征 data = np.random.rand(7, 10) ypred = bst.predict (数据)

R代码:

库(RLightGBM)数据(example.binary)#参数num_iterations <- 100 config <- list(objective =“binary”,metric =“binary_logloss,auc”,learning_rate = 0.1,num_leaves = 63,tree_learner =“serial”,feature_fraction = 0.8, bagging_freq = 5, bagging_fraction = 0.8, min_data_in_leaf = 50, min_sum_hessian_in_leaf = 5.0) #创建数据句柄和booster handle.data <- lgbm.data.create(x) lgbm.data.setField(handle.data, "label ", y) handle.booster <- lgbm.booster.create(handle.data, lapply(config, as.character)) #训练 num_iterations 次迭代,每 5 步评估一次 lgbm.booster.train(handle.booster, num_iterations, 5) #预测 pred <- lgbm.booster.predict(handle.booster, x.test) #测试精度 sum(y.test == (y.pred > 0.5)) / length(y.test) #保存模型(可以通过 lgbm.booster.load(filename)) 再次加载 lgbm.booster.save(handle.booster, filename = "/tmp/model.txt")

如果您熟悉 R 中的 Caret 包,这是实现 LightGBM 的另一种方法。

需要(脱字符号)需要(RLightGBM)数据(虹膜)模型<-caretModel.LGBM()适合<-训练(物种〜.,数据=虹膜,方法=模型,详细程度= 0)打印(适合)y.pred <- Predict(fit, iris[,1:4]) library(Matrix) model.sparse <- caretModel.LGBM.sparse() #生成稀疏矩阵 mat <- Matrix(as.matrix(iris[,1:4]) , 稀疏 = T) 拟合 <- train(data.frame(idx = 1:nrow(iris)), iris$Species, 方法 = model.sparse, 矩阵 = mat, 详细程度 = 0) 打印(fit)

猫助推器

CatBoost 是 Yandex 的开源机器学习算法之一。它可以轻松地与谷歌的 TensorFlow 和苹果的 Core ML 等深度学习框架集成。 CatBoost 最好的部分是,它不需要像其他机器学习模型那样进行大量的数据训练,并且可以处理各种数据格式,而不会降低其鲁棒性。

Catboost 可以自动处理分类变量,而不会显示类型转换错误,这有助于您专注于更好地调整模型,而不是整理琐碎的错误。在继续实施之前,请确保妥善处理丢失的数据。

Python代码:

import pandas as pd import numpy as np from catboost import CatBoostRegressor #读取训练和测试文件 train = pd.read_csv("train.csv") test = pd.read_csv("test.csv") #输入train和test的缺失值test train.fillna(-999, inplace=True) test.fillna(-999,inplace=True) #创建建模训练集和验证集以检查模型性能 X = train.drop(['Item_Outlet_Sales'], axis =1) y = train.Item_Outlet_Sales from sklearn.model_selection import train_test_split X_train, X_validation, y_train, y_validation = train_test_split(X, y, train_size=0.7, random_state=1234) categorical_features_indices = np.where(X.dtypes != np.float )[0] #导入库并构建模型 from catboost import CatBoostRegressormodel=CatBoostRegressor(iterations=50, depth=3,learning_rate=0.1, loss_function='RMSE') model.fit(X_train, y_train,cat_features=categorical_features_indices,eval_set=( X_validation, y_validation),plot=True) 提交 = pd.DataFrame() 提交['Item_Identifier'] = 测试['Item_Identifier'] 提交['Outlet_Identifier'] = 测试['Outlet_Identifier'] 提交['Item_Outlet_Sales'] = 模型.预测(测试)

R代码:

set.seed(1) require(titanic) require(caret) require(catboost) tt <- titanic::titanic_train[complete.cases(titanic::titanic_train),] data <- as.data.frame(as.matrix( tt), stringsAsFactors = TRUE) drop_columns = c("PassengerId", "Survived", "Name", "Ticket", "Cabin") x <- data[,!(names(data) %in% drop_columns)]y <- data[,c("幸存")] fit_control <- trainControl(method = "cv", number = 4,classProbs = TRUE) grid <- Expand.grid(深度 = c(4, 6, 8),learning_rate = 0.1,迭代 = 100,l2_leaf_reg = 1e-3,rsm = 0.95,border_count = 64) 报告 <- train(x, as.factor(make.names(y)),method = catboost.caret,verbose = TRUE, preProc = NULL,tuneGrid = grid, trControl = fit_control) print(report) 重要性 <- varImp(report, scale = FALSE) print(重要性)

练习题

现在,是时候尝试一下并实际尝试一下其他一些现实世界的数据集了。那么你准备好接受挑战了吗?通过以下练习问题加速您的数据科学之旅:

预测送餐公司的餐食需求
确定最有可能晋升的员工
预测在线问答平台上提出的查询的点赞数

尾注

到现在为止,我相信您已经对常用的机器学习算法有了一定的了解。我撰写本文并提供 R 和 Python 代码的唯一目的是让您立即开始使用。如果您热衷于掌握机器学习算法,请立即开始。解决问题,对过程有一个物理理解,应用这些代码,并观看其中的乐趣!

要点

  • 我们现在已经熟悉了业界使用的一些最常见的机器学习算法。
  • 我们已经介绍了各种机器学习算法的优点和缺点。
  • 我们还学习了 R 和 Python 语言的基本实现细节。

经常问的问题