使用 Python 和 scikit-learn 开发机器学习模型

pythonserver side programmingprogramming

机器学习是人工智能的一个分支,它允许机器自行学习和改进,而无需显式编程。Scikit-learn 是一个流行的机器学习 Python 库,它提供用于预测建模、数据挖掘和数据分析的各种工具。

在本教程中,我们将探索如何使用 scikit-learn 库开发机器学习模型。我们将从机器学习和 scikit-learn 库的简要介绍开始。然后,我们将进入主要内容,包括数据预处理、模型选择、模型训练和模型评估。我们将使用示例数据集来演示机器学习过程的每个步骤。

在本教程结束时,您将对如何使用 Python 和 scikit-learn 库开发机器学习模型有扎实的理解。

入门

在深入使用 scikit-learn 库之前,我们首先需要使用 pip 安装该库。

但是,由于它不是内置的,我们必须首先安装 scikit-learn 库。这可以使用 pip 包管理器完成。

要安装 scikit-learn 库,请打开您的终端并输入以下命令:

pip install scikit-learn

这将下载并安装 scikit-learn 库及其依赖项。安装完成后,我们就可以开始使用 scikit-learn 并利用其模块了!

步骤 1:数据预处理

构建机器学习模型的第一步是准备数据。scikit-learn 库提供了各种数据预处理工具,例如处理缺失值、编码分类变量和缩放数据。让我们看一些例子:

# 导入必要的库
import numpy as np
import pandas as pd
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import LabelEncoder, StandardScaler

# 加载数据集
dataset = pd.read_csv('data.csv')

# 处理缺失值
imputer = SimpleImputer(missing_values=np.nan, strategies='mean')
imputer.fit(dataset.iloc[:, 1:3])
dataset.iloc[:, 1:3] = imputer.transform(dataset.iloc[:, 1:3])

# 编码分类变量
labelencoder = LabelEncoder()
dataset.iloc[:, 0] = labelencoder.fit_transform(dataset.iloc[:, 0])

# 缩放数据
scaler = StandardScaler()
dataset.iloc[:, 1:3] = scaler.fit_transform(dataset.iloc[:, 1:3])

在此代码中,我们首先使用 pandas 库加载数据集。然后,我们通过将缺失值替换为列的平均值来处理缺失值。接下来,我们对分类变量进行编码,最后缩放数据。

步骤 2:模型选择

一旦我们对数据进行了预处理,下一步就是为我们的问题选择合适的模型。scikit-learn 库为不同类型的问题(例如分类、回归和聚类)提供了各种模型。让我们看一个选择分类模型的例子:

from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(dataset.iloc[:, 1:3], dataset.iloc[:, 0], test_size=0.2, random_state=0)

# 训练 K-NN 模型
classifier = KNeighborsClassifier(n_neighbors=5)
classifier.fit(X_train, y_train)

# 预测测试集结果
y_pred = classifier.predict(X_test)

在此代码中,我们首先使用train_test_split 函数。然后,我们使用 KNeighborsClassifier 类训练 K-NN(K-最近邻)分类模型。最后,我们使用 predict 方法预测测试集结果。

步骤 3:模型训练

准备好数据后,我们可以训练我们的机器学习模型。Scikit-learn 提供各种机器学习模型,例如决策树、随机森林、支持向量机等。

在此示例中,我们将在鸢尾花数据集上训练决策树分类器。以下是代码:

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

# 将数据拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建模型
clf = DecisionTreeClassifier()

# 训练模型
clf.fit(X_train, y_train)

# 测试模型
accuracy = clf.score(X_test, y_test)
print("Accuracy:", accuracy)

首先,我们使用 train_test_split 函数将数据拆分为训练集和测试集。此函数将数据随机拆分为两部分,一部分用于训练,另一部分用于测试。我们指定 test_size 参数来指示用于测试的数据百分比。

接下来,我们创建 DecisionTreeClassifier 类的实例并使用训练数据对其进行训练。最后,我们使用测试数据测试模型并计算模型的准确性。

此代码的输出将是模型在测试数据上的准确性。准确性将根据用于拆分数据的随机状态而有所不同。

步骤 4:模型评估

训练模型后,我们需要评估其性能。Scikit-learn 提供了几个用于评估机器学习模型的指标,包括准确性、精确度、召回率、F1 分数等。

在此示例中,我们将使用混淆矩阵和分类报告评估决策树分类器的性能。以下是代码:

from sklearn.metrics import chaos_matrix, classes_report

# 对测试数据进行预测
y_pred = clf.predict(X_test)

# 打印混淆矩阵
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred))

# 打印分类报告
print("分类报告:")
print(classification_report(y_test, y_pred))

首先,我们使用 DecisionTreeClassifier 实例的预测方法对测试数据进行预测。然后,我们使用 sklearn.metrics 模块中的 confused_matrix 和 classes_report 函数打印混淆矩阵和分类报告。

混淆矩阵显示了真阳性、假阳性、真阴性和假阴性的数量。分类报告显示每个类别的准确率、召回率、F1 分数和支持度。

步骤 5:模型部署

在训练和评估模型后,我们可以部署它来对新数据进行预测。以下是如何使用训练后的决策树分类器预测新鸢尾花种类的示例:

# 创建一朵新的鸢尾花
new_flower = [[5.1, 3.5, 1.4, 0.2]]

# 进行预测
prediction = clf.predict(new_flower)

# 打印预测
print("预测:", iris.target_names[prediction[0]])

我们创建一朵新的鸢尾花,其四个测量值与数据集中的其他花相同。然后,​​我们使用经过训练的 DecisionTreeClassifier 实例的预测方法对新数据进行预测。最后,我们打印出预测的花的种类。

输出

它将产生以下输出:

预测:setosa

结论

在本教程中,我们学习了如何使用 Python 和 scikit-learn 库开发机器学习模型。我们介绍了数据准备、模型训练、模型评估和模型部署的基础知识。


相关文章