适合初级数据科学家的十大机器学习算法

适合初级数据科学家的十大机器学习算法

经过十年的不断探索和应用,机器学习已经成为数据科学家工具包中的一个重要工具,并且已经广为人知。

为了有效地利用机器学习的力量,理解其基本概念及其实际应用至关重要。

在本文中,我们将探讨最适合数据科学入门者的十大机器学习算法,以及如何应用它们。让我们开始吧!如果你想了解更多关于机器学习的相关内容,可以阅读以下这些文章:
金融中的机器学习:利用随机森林掌握时间序列分类
每个机器学习工程师都应该知道的线性代数!!
2023年面向开发者的十大机器学习(ML)工具
CPU与GPU:哪个更适合机器学习,为什么?

图片由作者提供

线性回归通过建立输入变量和输出之间的线性关系来预测连续输出。想象一下在图表上通过一组点画一条直线。它通过找到最适合数据点的线来决定。这条线是通过最小化实际值和线的预测值之间的差异(误差)来确定的。

评估指标

均方误差(MSE):测量误差平方的平均值。值越低越好。

R平方:表示可以根据独立变量预测因变量变化的百分比。越接近1越好。

使用Sci-kit Learn进行应用

既然我们首先讨论线性回归,我们将使用糖尿病数据集,这是scikit-learn中的预加载数据集,非常适合回归任务。

以下是我们将在下面的代码块中遵循的步骤:

  1. 加载糖尿病数据集:该数据集包含十个基线变量,包括年龄、性别、BMI、平均血压和糖尿病患者的六种血清测量值。
  2. 分割数据集:将其分为训练集和测试集。
  3. 创建和训练线性回归模型:使用训练集构建模型。
  4. 预测和评估:使用测试集进行预测,然后使用MSE和R平方评估模型。

现在我们开始吧!

from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# Load the Diabetes dataset
diabetes = load_diabetes()
X, y = diabetes.data, diabetes.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Linear Regression model
model = LinearRegression()
model.fit(X_train, y_train)

# Predicting the test set results
y_pred = model.predict(X_test)

# Evaluating the model
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print("MSE is:", mse)
print("R2 score is:", r2)

这是输出。

这些结果表明,我们的线性回归模型解释了糖尿病数据集中约45%的方差。MSE 告诉我们,平均而言,我们的预测值与真实值相差约2900个单位。

2 逻辑回归

图片由作者提供

逻辑回归用于分类问题。它预测给定数据点属于某个类别的概率,比如是/否或0/1。它使用逻辑函数输出一个介于0和1之间的值。然后根据一个阈值(通常是0.5)将该值映射到特定的类别。

评估指标

  • 准确度:准确率是正确预测的观察值与总观察值的比率。
  • 精确度和召回率:精确率是正确预测的正类观察值与所有预测为正类的观察值的比率。召回率是正确预测的正类观察值与实际为正类的所有观察值的比例。

使用 Sci-kit Learn 进行应用

乳腺癌数据集,scikit-learn中的另一个预加载数据集。它用于二元分类,适合逻辑回归。

以下是我们应用逻辑回归所遵循的步骤。

  1. 加载乳腺癌数据集:该数据集包含根据乳腺肿块细针抽吸(FNA)的数字化图像计算出的特征,目的是将其分类为良性或恶性。
  2. 划分数据集:将数据集分为训练集和测试集。
  3. 创建并训练逻辑回归模型:使用训练集构建模型。
  4. 预测和评估:使用测试集进行预测,然后使用准确度、精确度、召回率和F1 分数评估模型。

我们来看看代码。

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score


# Load the Breast Cancer dataset
breast_cancer = load_breast_cancer()
X, y = breast_cancer.data, breast_cancer.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Logistic Regression model
model = LogisticRegression(max_iter=10000)
model.fit(X_train, y_train)

# Predicting the test set results
y_pred = model.predict(X_test)

# Evaluating the model
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)

# Print the results
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

这是输出结果。

高召回率表明该模型特别擅长识别恶性病例,这在医学诊断中至关重要。

3 决策树

图片由作者提供

决策树类似于流程图,根据某些条件或特征对数据进行拆分。它们既适用于回归,也适用于分类。

其运作方式是使用特征值将数据集拆分为更易于管理的子组。每个内部节点代表一个属性测试,每个分支表示测试的结果,每个叶节点代表一个类标签(决策)

评估指标

  • 对于分类:准确率、精确率、召回率和F1分数。
  • 对于回归:均方误差(MSE)、R平方。

使用Sci-kit Learn进行应用

我们将使用葡萄酒的数据集进行决策树分类任务。该数据集是根据不同属性将葡萄酒分类为三种类型。我们将训练模型,预测葡萄酒类型,并使用分类指标进行评估。

以下是我们将在下面的代码中遵循的步骤。

1.加载葡萄酒数据集

葡萄酒数据集包含对意大利同一地区生产的三种不同葡萄酒的化学研究。研究发现,三种葡萄酒中各有十三种成分,含量不同。

2.分割数据集

数据集中包含训练集和测试集。这是为了在数据的一部分(训练集)上训练模型,并在未见过的数据(测试集)上测试其性能。我们使用了80%的数据进行训练,20%的数据进行测试。

3.创建并训练决策树模型

创建决策树分类器。该模型将从训练数据中学习。它构建一个树状决策模型,其中树中的每个节点代表数据集的一个特征,而分支代表决策规则,从而导致不同的结果或分类。

4.预测和评估

使用模型对测试集的分类进行预测。然后通过将这些预测与实际标签进行对比来评估模型的性能。

这是代码。

from sklearn.datasets import load_wine
from sklearn.tree import DecisionTreeClassifier

# Load the Wine dataset
wine = load_wine()
X, y = wine.data, wine.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Decision Tree model
model = DecisionTreeClassifier(random_state=42)
model.fit(X_train, y_train)

# Predicting the test set results
y_pred = model.predict(X_test)

# Evaluating the model
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')

# Print the results
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

这是输出。

这些结果表明决策树模型在这个数据集上表现优秀。高精确率意味着当模型做出特定葡萄酒类型的预测时,其预测准确率较高。

“朴素贝叶斯分类器”是一类简单的“概率分类器”,它利用贝叶斯定理和特征之间的强(朴素)独立假设。它特别适用于文本分类。

该分类器计算每个类别的概率以及给定每个输入值时每个类别的条件概率。然后根据最高概率对新值进行分类。

评估指标

  • 准确性:衡量模型的整体正确性。
  • 准确率、召回率和 F1 分数:在类别分布不平衡的情况下尤为重要。

使用 Sci-kit Learn 进行应用

我们将使用数字数据集,该数据集涉及对手写数字图像(0-9)进行分类。这是一个多类别分类问题。我们将训练朴素贝叶斯模型,预测数字类别,并使用分类指标进行评估。以下是我们将要遵循的步骤。

1.加载Digits数据集:

Digits数据集包含手写数字(从0到9)的8×8像素图像。每个图像被表示为一个包含64个值(8×8像素)的特征向量,每个值表示像素的灰度强度。

2.分割数据集:

与前面的示例类似,数据集分为训练集和测试集。我们使用 80% 的数据进行训练,20% 的数据进行测试。这有助于在大量数据上训练模型,在此之前从未见过的单独数据集上评估其性能。

3.创建并训练朴素贝叶斯模型:

创建了一个高斯朴素贝叶斯分类器。这种朴素贝叶斯的变体假设每个特征相关的连续值符合高斯(正态)分布。 然后,模型在训练数据上进行训练(拟合)。它学习将输入特征(像素值)与目标值(数字类别)关联起来。

4.预测和评估:

训练后,模型用于预测测试数据的类标签。

下面是代码。

from sklearn.datasets import load_digits
from sklearn.naive_bayes import GaussianNB

# Load the Digits dataset
digits = load_digits()
X, y = digits.data, digits.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Naive Bayes model
model = GaussianNB()
model.fit(X_train, y_train)

# Predicting the test set results
y_pred = model.predict(X_test)

# Evaluating the model
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')

# Print the results
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

这是输出。

这些结果表明,朴素贝叶斯模型在此数据集上表现良好,准确率和召回率相当均衡。该模型在对手写数字进行分类方面非常有效,但仍有改进空间,特别是在准确率和F1分数方面。

图片由作者提供

K-最近邻(K-Nearest Neighbors,KNN)是一种容易理解的回归和分类方法。数据点的分类取决于其邻近点的分类。

KNN算法会查看距离某个数据点最近的‘K’个邻居点,并根据这些邻居点中的主要类别来对该数据点进行分类。对于回归问题,KNN则取‘K’个最近点的平均值。

评估指标

  • 分类:准确度、精确度、召回率、F1分数。
  • 回归:均方误差(MSE)、R平方。

使用 Sci-kit Learn 进行应用

我们将再次使用葡萄酒数据集,这次使用K最近邻(KNN)算法。我们将训练KNN模型来对葡萄酒的类型进行分类,并使用分类指标评估其性能。以下是我们将要遵循的步骤:

1. 创建并训练KNN模型:

  • 创建一个K最近邻(KNN)模型,设置n_neighbors=3。这意味着模型在预测时会考虑数据点的三个最近邻。
  • 使用训练数据对模型进行训练(拟合)。在训练过程中,模型不会构建传统的模型,而是记住整个数据集。

2. 预测:

然后使用训练后的KNN模型来预测测试数据的类别标签(葡萄酒类型)。该模型通过检查训练集中的三个最近点来确定测试集中每个点在这些邻居中最常见的类别。

3. 评估:

根据测试集的实际标签来评估模型的预测。

这是代码。

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# Load the Wine dataset
wine = load_wine()
X, y = wine.data, wine.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the KNN model
knn_model = KNeighborsClassifier(n_neighbors=3)
knn_model.fit(X_train, y_train)

# Predicting the test set results
y_pred_knn = knn_model.predict(X_test)

# Evaluating the model
accuracy_knn = accuracy_score(y_test, y_pred_knn)
precision_knn = precision_score(y_test, y_pred_knn, average='macro')
recall_knn = recall_score(y_test, y_pred_knn, average='macro')
f1_knn = f1_score(y_test, y_pred_knn, average='macro')

# Print the results
print("Accuracy:", accuracy_knn)
print("Precision:", precision_knn)
print("Recall:", recall_knn)
print("F1 Score:", f1_knn)

这些结果表明KNN模型在此数据集上表现非常出色。所有指标的高分表明该模型不仅总体准确,而且在准确率和召回率之间保持了良好的平衡,有效地对葡萄酒类型进行了分类。

6 支持向量机(SVM)

图片由作者提供

支持向量机(SVM)是一种功能强大、用途广泛的监督学习模型,可用于分类和回归任务。它们能很好地处理复杂的数据集。

SVM在高维空间中构建一个超平面(或一组超平面)来区分不同的类别。其目的是找到分隔不同类别的最佳边距(直线与每个类别最近点之间的距离,称为支持向量)。

评估指标

分类问题:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值(F1 Score)。回归问题:均方误差(MSE)、R平方(R-squared)。

使用Sci-kit Learn

我们将把SVM应用于乳腺癌数据集,重点是将肿瘤分为良性和恶性。我们将训练SVM模型,并使用分类指标评估其性能。

以下是我们要遵循的步骤;

1.创建并训练SVM模型:

使用默认设置创建支持向量机(SVM)模型。SVM以其创建超平面(或高维空间中的多个超平面)的能力而著称,该超平面能以尽可能大的余量将类别分开。

2.预测:

训练好的SVM模型将用于预测测试数据的类标签。预测的方法是确定每个数据点位于超平面的哪一边。

3.评估:

根据测试集的实际标签评估模型的预测结果,以评估其性能。

以下是代码

from sklearn.svm import SVC

breast_cancer = load_breast_cancer()
X, y = breast_cancer.data, breast_cancer.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the SVM model
svm_model = SVC()
svm_model.fit(X_train, y_train)

# Predicting the test set results
y_pred_svm = svm_model.predict(X_test)

# Evaluating the model
accuracy_svm = accuracy_score(y_test, y_pred_svm)
precision_svm = precision_score(y_test, y_pred_svm, average='macro')
recall_svm = recall_score(y_test, y_pred_svm, average='macro')
f1_svm = f1_score(y_test, y_pred_svm, average='macro')

accuracy_svm, precision_svm, recall_svm, f1_svm

# Print the results
print("Accuracy:", accuracy_svm)
print("Precision:", precision_svm)
print("Recall:", recall_svm)
print("F1 Score:", f1_svm)

下面是输出结果。

这些结果表明,SVM模型在乳腺癌数据集上的表现非常出色。高准确度、高精确度、高召回率和高F1分数证明了该模型在区分良性肿瘤和恶性肿瘤方面的有效性。

精确度和召回率之间的平衡在医疗诊断中尤为重要,因为误报和漏报都会带来严重后果。

图片由作者提供

一种通常用于回归和分类的集合学习技术被称为随机森林。为了提供更可靠、更准确的预测,它构建了许多决策树,并将它们混合在一起。

随机森林中的每一棵树都会做出预测,而模型的预测(分类)属于得票最多的类别。对于回归,它取不同决策树输出的平均值。

评估指标:

分类问题:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值(F1 Score)。

回归问题:均方误差(MSE)、R平方(R-squared)。

使用Sci-kit Learn

我们将在乳腺癌数据集上应用随机森林,将肿瘤分为良性和恶性。我们将训练随机森林模型,并使用分类指标评估其性能。

1.创建并训练随机森林模型:

初始化随机森林分类器。

利用训练数据,拟合(训练)模型。

2.预测:

使用训练好的模型预测测试数据的标签。

3.评估:

使用准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1分数(F1 Score)评估模型在测试数据上的表现。

让我们看看代码。

from sklearn.ensemble import RandomForestClassifier

breast_cancer = load_breast_cancer()
X, y = breast_cancer.data, breast_cancer.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)


# Creating and training the Random Forest model
rf_model = RandomForestClassifier(random_state=42)
rf_model.fit(X_train, y_train)

# Predicting the test set results
y_pred_rf = rf_model.predict(X_test)

# Evaluating the model
accuracy_rf = accuracy_score(y_test, y_pred_rf)
precision_rf = precision_score(y_test, y_pred_rf, average='macro')
recall_rf = recall_score(y_test, y_pred_rf, average='macro')
f1_rf = f1_score(y_test, y_pred_rf, average='macro')

# Print the results
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

下面是输出结果。

这些结果表明,随机森林模型在乳腺癌数据集上具有很高的性能,在所有关键指标上都有很高的得分。

高精确度和高召回率表明,该模型能有效准确地识别良性和恶性肿瘤,并能均衡地减少误报和误判。

K-Means聚类法是一种无监督学习算法,用于将数据分成“K”个聚类。在确定k个中心点后,每个数据点会被分配到最近的聚类中,目标是使中心点的大小最小。

该算法将数据点分配到一个聚类,使数据点与聚类中心点之间的距离平方和最小。簇内数据点的同质性随着簇内方差的减小而增加。

评价指标

  • 惯性:样本到最近聚类中心的总平方距离称为惯性。数值越小越好。
  • 剪影得分:表示一个项目属于自己聚类的内聚程度,而不是与其他聚类的分离程度。剪影得分越高,说明项目与自己的聚类匹配度越高,与附近聚类的匹配度越低。剪影得分从-1到1。

应用Sci-kit Learn

让我们使用虹膜数据集进行K-Means聚类。我们的任务是根据鸢尾花的花朵测量值将其归类。我们将训练模型,将植物分配到聚类中,并评估聚类效果。

1.加载鸢尾花数据集:

鸢尾花数据集包含鸢尾花的测量数据,包括萼片长度、萼片宽度、花瓣长度和花瓣宽度。该数据集通常用于分类任务,但在这里我们将使用它进行聚类。

2.应用K-Means聚类:

我们将K-Means聚类算法初始化为n_clusters=3,因为数据集中有三种虹膜。不过,该算法并不了解这些物种;它只是试图找到将数据分成三个聚类的最佳方法。

我们将模型拟合到数据X中,其中包括我们的四个特征。K-Means算法根据数据点与聚类中心点的距离,反复将每个数据点分配到三个聚类之一。

3.预测聚类:

预测方法用于将X中的每个数据点分配到三个聚类之一。由于拟合和预测是同时进行的,因此这一步与K-Means有些概念上的区别,但本质上,现在每个数据点都标上了聚类编号

4. 评估聚类:

我们使用两个指标对聚类进行评估:

  • 惯性:这是样本与其最近聚类中心的距离平方和。这是衡量聚类内部一致性的指标。我们的目标是降低惯性。
  • 剪影得分:用于衡量一个对象与其他聚类(分离度)相比,与自身聚类的相似度(内聚度)。剪影得分的范围在-1到1之间,数值越高,说明该对象与自己的聚类匹配度越高,而与邻近聚类的匹配度越低。

让我们来看看代码。

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# Load the Iris dataset
iris = load_iris()
X = iris.data

# Applying K-Means Clustering
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)

# Predicting the cluster for each data point
y_pred_clusters = kmeans.predict(X)

# Evaluating the model
inertia = kmeans.inertia_
silhouette = silhouette_score(X, y_pred_clusters)

print("Inertia:", inertia)
print("Silhouette:", silhouette)

下面是输出结果。

这些指标表明,K-Means算法在对虹膜数据集进行聚类时表现相当出色,但在聚类的紧凑性和分离度方面仍有改进的余地。

降维是通过使用主成分分析法(PCA)来实现的。它将数据转换到一个新的坐标系中,在减少变量数量的同时尽可能保留原始数据的变化。

利用PCA可以找到能最大限度地反映数据方差的主成分或轴。第一个主成分捕捉的方差最大,第二个主成分(与第一个主成分正交)捕捉的方差次之,依此类推。

评估指标

  • 解释方差:表示每个主成分能捕捉多少数据方差。
  • 总解释方差:所选主成分解释的累计方差。

应用Sci-kit Learn

乳腺癌数据集包括从乳腺肿瘤细针穿刺术(FNA)的数字图像中提取的特征,我们将对该数据集进行PCA分析。我们的目标是最大限度地降低数据集的维度,同时保持最大的信息量。

以下是我们要遵循的步骤:

1.加载乳腺癌数据集:

乳腺癌数据集包含从乳腺肿块细针穿刺数字化图像中计算出的特征。这些特征是图片中可见的细胞核的属性。

2.应用PCA:

我们将PCA初始化为n_components=2,表示我们打算将数据集缩小到两个维度。这种选择通常是出于可视化目的,或作为其他算法的预处理步骤。

我们对数据X进行PCA拟合。在此过程中,PCA会找出数据中差异最大的轴(主成分)。

3.转换数据:

这将产生一个新的数据集X_pca,其中每个数据点现在都用两个主成分来表示。

4.评估PCA变换:

我们通过查看每个主成分的解释方差来评估PCA变换。这可以告诉我们每个主成分在数据总方差中的占比。

总解释方差的计算方法是将两个主成分的解释方差相加。这样我们就能从总体上衡量出在降维过程中保留了多少信息。

现在让我们来看看代码。

from sklearn.datasets import load_breast_cancer
from sklearn.decomposition import PCA
import numpy as np

# Load the Breast Cancer dataset
breast_cancer = load_breast_cancer()
X = breast_cancer.data

# Applying PCA
pca = PCA(n_components=2)  # Reducing to 2 dimensions for simplicity
pca.fit(X)

# Transforming the data
X_pca = pca.transform(X)

# Explained Variance
explained_variance = pca.explained_variance_ratio_

# Total Explained Variance
total_explained_variance = np.sum(explained_variance)

print("Explained variance:", explained_variance)
print("Total Explained Variance:", total_explained_variance)

让我们看看结果如何。

让我们来评估一下结果。

解释方差:

第一主成分:98.20%

第二主成分:1.62%

总解释方差:99.82%

这些结果表明,通过将数据集简化为两个主成分,我们捕捉到了数据集中约99.82%的总方差。

其中,第一主成分就占了绝大部分,这表明它捕捉到了数据集中的大部分基本信息。

梯度提升是一种高级的机器学习技术。它通过顺序地构建多个弱预测模型(通常是决策树),每个新模型逐渐减少整个系统的损失函数(误差)

涉及三个组件:一个添加模型,用于添加弱学习器以最小化损失函数;一个需要优化的损失函数;以及一个需要生成预测的弱学习器。每棵新树都修正之前树所犯的错误。

评估指标

对于分类问题:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值(F1 Score)。

对于回归问题:均方误差(MSE)、R平方(R-squared)。

使用Scikit-Learn进行应用

我们将使用糖尿病数据集进行梯度提升。我们的目标是根据各种特征预测糖尿病的发展情况。我们将训练一个梯度提升模型并评估其性能。

以下是我们将遵循的步骤:

1.加载糖尿病数据集

糖尿病数据集包括年龄、性别、体重指数、平均血压和六项血清指标。基线一年后,疾病发展的量化评估是目标变量。

2.创建并训练梯度提升模型:

我们初始化一个梯度提升调节器。梯度提升法允许优化任何可微分的损失函数,并以向前、逐步的方式构建一个相加模型。

在训练数据上训练(拟合)该模型。在这一步中,模型学会根据特征预测糖尿病的进展。

3.预测:

我们使用训练好的梯度提升模型来预测测试数据上的疾病进展。这一步包括将模型应用于未见过的数据,以评估其预测能力。

4.评估:

使用两个关键指标评估模型的性能:

平均平方误差(MSE):该指标计算的是错误平方的平均值。它是评估估计器质量的指标;数值接近零表示质量更高。

R平方:该统计量基于模型所解释的结果方差占总结果方差的百分比,表明模型对观察结果的重复程度。

下面是代码

from sklearn.datasets import load_diabetes
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error, r2_score

# Load the Diabetes dataset
diabetes = load_diabetes()
X, y = diabetes.data, diabetes.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Gradient Boosting model
gb_model = GradientBoostingRegressor(random_state=42)
gb_model.fit(X_train, y_train)

# Predicting the test set results
y_pred_gb = gb_model.predict(X_test)

# Evaluating the model
mse_gb = mean_squared_error(y_test, y_pred_gb)
r2_gb = r2_score(y_test, y_pred_gb)

print("MSE:", mse_gb)
print("R2 score:", r2_gb)

下面是输出结果。

这些结果表明,梯度提升模型在预测糖尿病发展方面具有中等水平的准确性。

R平方值为0.45,表明模型解释了目标变量中近45%的方差,对于这样一个复杂的任务来说,这是一个不错的结果。

均方误差(MSE)给我们一个关于实际观察结果和模型预测结果之间平均平方差的概念。

在本文中,我们回顾了对任何初学数据科学家来说都必不可少的十大机器学习算法。记住,在实际场景中持续练习和应用是掌握这些算法的关键。

感谢阅读!你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Nathan Rosidi
翻译作者:诗彤&Qing
美工编辑:过儿
校对审稿:Jason
原文链接:https://nathanrosidi.medium.com/top-10-machine-learning-algorithms-for-beginner-data-scientists-aae78826712f