使用 Scikit - Learn 进行监督学习

Beginner

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

简介

在监督学习中,我们希望学习两个数据集之间的关系:观测数据 X 和我们想要预测的外部变量 y

监督学习问题主要有两种类型:分类和回归。在分类中,目标是预测一个观测值的类别或种类,而在回归中,目标是预测一个连续的目标变量。

在这个实验中,我们将探索监督学习的概念,并了解如何使用 scikit-learn(Python 中一个流行的机器学习库)来实现它们。我们将涵盖最近邻分类、线性回归和支持向量机(SVM)等主题。

虚拟机使用提示

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

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

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

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 94%。获得了学习者 91% 的好评率。

最近邻分类

在这一步中,我们将探索最近邻分类的概念,以及如何使用 scikit-learn 来实现它。我们将使用鸢尾花数据集,该数据集包含了不同鸢尾花的测量数据。

加载鸢尾花数据集
import numpy as np
from sklearn import datasets

iris_X, iris_y = datasets.load_iris(return_X_y=True)
将数据拆分为训练集和测试集
np.random.seed(0)
indices = np.random.permutation(len(iris_X))
iris_X_train = iris_X[indices[:-10]]
iris_y_train = iris_y[indices[:-10]]
iris_X_test = iris_X[indices[-10:]]
iris_y_test = iris_y[indices[-10:]]
创建并拟合最近邻分类器
from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier()
knn.fit(iris_X_train, iris_y_train)
进行预测
predictions = knn.predict(iris_X_test)

线性回归

在这一步中,我们将探索线性回归的概念,以及如何使用 scikit-learn 来实现它。我们将使用糖尿病数据集,该数据集包含患者的生理变量以及他们一年后的疾病进展情况。

加载糖尿病数据集
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]
创建并拟合线性回归模型
from sklearn import linear_model

regr = linear_model.LinearRegression()
regr.fit(diabetes_X_train, diabetes_y_train)
进行预测并计算性能指标
predictions = regr.predict(diabetes_X_test)
mse = np.mean((predictions - diabetes_y_test)**2)
variance_score = regr.score(diabetes_X_test, diabetes_y_test)

支持向量机(SVM)

在这一步中,我们将探索支持向量机(SVM)的概念,以及它们如何用于分类任务。SVM 旨在找到一个超平面,将不同类别的数据点最大程度地分开。

创建并拟合线性 SVM
from sklearn import svm

svc = svm.SVC(kernel='linear')
svc.fit(iris_X_train, iris_y_train)
创建并拟合具有不同核的 SVM
svc_poly = svm.SVC(kernel='poly', degree=3)
svc_rbf = svm.SVC(kernel='rbf')

svc_poly.fit(iris_X_train, iris_y_train)
svc_rbf.fit(iris_X_train, iris_y_train)

总结

在这个实验中,我们学习了不同的监督学习技术,以及如何使用 scikit-learn 来实现它们。我们涵盖了最近邻分类、线性回归和支持向量机(SVM)。这些技术使我们能够从高维观测中预测输出变量,并将数据分类为不同的类别。通过将这些技术应用于实际数据集,我们可以在医疗保健、金融和社会科学等各个领域获得见解并进行预测。