入门者的十大机器学习算法

在本文中,我们将探讨最适合数据科学入门者的十大机器学习算法,以及如何应用它们。让我们开始吧!

1.线性回归

面向初级数据科学家的机器学习算法

线性回归通过建立输入变量和输出之间的线性关系来预测连续输出。想象一下在图表上通过一组点画一条直线。

它通过找到最适合数据点的线来决定。这条线是通过最小化实际值和线的预测值之间的差异(误差)来确定的。

评估指标

均方误差 (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)将该值映射到特定类别。

评估指标

  • 准确度:准确度是正确预测的观测值与总观测值的比率。
  • 精确度和召回率:精确度是正确预测的正观察值与所有预期的正观察值的比率。召回率是正确预测的正观察值与实际类别中所有观察值的比例。
  • F1 分数:召回率和准确率之间的平衡。

使用 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 进行应用

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

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

  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)

这是输出。

面向初级数据科学家的机器学习算法

这些结果表明决策树模型在这个数据集上表现非常好。高精度表明,当它预测某一类葡萄酒时,通常是正确的。

4.朴素贝叶斯

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

它计算每个类别的概率以及给定每个输入值的每个类别的条件概率。然后使用这些概率根据最高概率对新值进行分类。

评估指标:

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

使用 Sci-kit Learn 进行应用

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

  1. 加载数字数据集:
  • Digits 数据集由 8x8 像素的手写数字图像(从 0 到 9)组成。每幅图像表示为一个包含 64 个值(8x8 像素)的特征向量,每个值代表一个像素的灰度强度。

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 分数方面。

  1. K最近邻(KNN)
    =============

KNN机器学习算法

图片来自作者

一种易于理解的回归和分类方法是 K-最近邻 (KNN)。数据点根据其邻居的分类进行分类。

KNN 查找距离数据点最近的“K”个点(邻居),并根据这些邻居的多数类对其进行分类。对于回归,它取“K”个最近点的平均值。

评估指标

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

使用 Sci-kit Learn 进行应用

我们将再次使用 Wine 数据集,但这次使用 KNN。我们将训练 KNN 模型来对葡萄酒类型进行分类,并使用分类指标评估其性能。以下是我们将遵循的步骤。

1.创建并训练KNN模型:

  • 使用 n_neighbors=3 创建 K 最近邻 (KNN) 模型。这意味着该模型会查看数据点的三个最近邻来做出预测。
  • 该模型使用训练数据进行训练(拟合)。在训练过程中,它不会构建传统模型,而是记住数据集。

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机器学习算法

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

6.支持向量机(SVM)

SVM机器学习算法

图片来自作者

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

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

评估指标

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

使用 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机器学习算法

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

精确度和召回率之间的平衡在医学诊断中尤为重要,因为假阳性和假阴性都会带来严重后果。

7.随机森林

随机森林机器学习算法

图片来自作者

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

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

评估指标:

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

使用 Sci-kit Learn 进行应用

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

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

  • 初始化随机森林分类器。
  • 利用训练数据,拟合(训练)模型。

2.预测:

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

3.评估:

  • 使用准确度、精确度、召回率和 F1 分数评估模型在测试数据上的性能。

我们来看看代码。

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)

这是输出。

随机森林机器学习算法

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

高精度和召回率表明该模型能够准确识别良性和恶性肿瘤,并能平衡地减少假阳性和假阴性。

  1. K均值聚类
    =========

K-均值聚类机器学习算法

图片来自作者

K 均值聚类是一种无监督学习算法,用于将数据分组为“K”个聚类。确定 k 个质心后,每个数据点被分配到最近的聚类中,目的是最小化质心的大小。

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

评估指标

  • 惯性:样本到最近聚类中心的距离平方和称为惯性。值越低越好。
  • 轮廓分数:表示项目与其自身集群的结合程度,而不是与其他集群的分离程度。轮廓分数高意味着项目与其自身集群的匹配度高,与附近集群的匹配度低。轮廓分数从 -1 到 1。

使用 Sci-kit Learn 进行应用

让我们使用鸢尾花数据集进行 K-Means 聚类。任务是根据鸢尾花的花朵尺寸将其分组。我们将训练模型,将植物分配到簇中,并评估聚类。

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

2.应用K均值聚类

  • 我们用 n_clusters=3 初始化 K-Means 聚类算法,因为数据集中有三种鸢尾花。但是,该算法并不知道这些种类;它只会尝试找到将数据分组为三个簇的最佳方法。
  • 我们将模型拟合到包含四个特征的数据 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-均值聚类机器学习算法

这些指标表明,K-Means 算法在 Iris 数据集的聚类中表现相当不错,但是在聚类紧凑性和分离性方面还有改进空间。

9.主成分分析(PCA)

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

使用 PCA 可以找到使数据方差最大化的主要成分或轴。第一个主成分捕获最大方差,第二个主成分(与第一个主成分正交)捕获次大方差,依此类推。

评估指标

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

使用 Sci-kit Learn 进行应用

乳腺癌数据集包含从乳腺肿瘤细针抽吸 (FNA) 数字图片中得出的特征,将接受 PCA 分析。我们的目标是在保留最大信息量的同时最小化数据集的维数。

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

  1. 加载乳腺癌数据集
  • 乳腺癌数据集由根据乳腺肿块细针抽吸物数字化图像计算得出的特征组成。这些特征是图片中可见的细胞核的属性。

2.应用PCA

  • 我们用 n_components=2 初始化 PCA,表明我们打算将数据集减少到二维。这种选择通常是为了可视化目的或作为其他算法的预处理步骤。
  • 我们将 PCA 拟合到数据 X。在此过程中,PCA 会识别出解释数据中最大方差的轴(主成分)。

3.转换数据

  • PCA 的变换方法用于对 X 进行降维。这会产生一个新的数据集 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% 的总方差。

第一个成分单独解释了这一方差的绝大部分,这表明它捕获了数据集中存在的大部分基本信息。

10.梯度提升算法

梯度提升是一种先进的机器学习技术。它依次构建多个弱预测模型(通常是决策树)。每个新模型都会逐渐最小化整个系统的损失函数(误差)。

涉及三个组件:添加弱学习器以最小化损失函数的加法模型、必须优化的损失函数和需要生成预测的弱学习器。每棵新树都会修复之前树所犯的错误。

评估指标

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

使用 Sci-kit 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 让我们了解观察到的实际结果与模型预测的结果之间的平均平方差异。

最后的想法

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

  • 23
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值