使用 Python 进行机器学习交叉验证

Machine LearningMachine LearningBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在机器学习中,交叉验证是一种用于在独立数据集上评估模型性能的技术。它通过更好地估计模型对新的、未见过的数据的泛化能力,有助于防止过拟合。

在本实验中,我们将探讨交叉验证的概念,以及如何使用Python中的scikit-learn库来实现它。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问Jupyter Notebook进行练习。

有时,你可能需要等待几秒钟让Jupyter Notebook完成加载。由于Jupyter Notebook的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向Labby提问。课程结束后提供反馈,我们会及时为你解决问题。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/model_selection -.-> lab-71122{{"使用 Python 进行机器学习交叉验证"}} ml/sklearn -.-> lab-71122{{"使用 Python 进行机器学习交叉验证"}} end

导入必要的库

首先,让我们导入本实验所需的库。

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn import svm

加载数据集

接下来,让我们加载一个数据集来训练我们的模型。在这个例子中,我们将使用鸢尾花数据集,它是用于分类任务的一个流行数据集。

X, y = datasets.load_iris(return_X_y=True)

将数据集拆分为训练集和测试集

为了评估我们模型的性能,我们需要将数据集拆分为训练集和测试集。我们将使用scikit-learn库中的train_test_split函数来完成此操作。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)

训练并评估模型

现在,让我们在训练集上训练一个支持向量机(SVM)分类器,并在测试集上评估其性能。

clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)
score = clf.score(X_test, y_test)
print("Accuracy: ", score)

总结

在本实验中,我们学习了如何使用Python中的scikit-learn库来实现交叉验证。我们将数据集拆分为训练集和测试集,在训练集上训练模型,并在测试集上评估其性能。交叉验证有助于防止过拟合,并能更好地估计模型对新的、未见过的数据的泛化能力。