使用 Scikit - Learn 进行监督学习

Machine LearningMachine LearningBeginner
立即练习

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

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

简介

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

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

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

虚拟机使用提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/neighbors("Nearest Neighbors") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/neighbors -.-> lab-71097{{"使用 Scikit - Learn 进行监督学习"}} ml/sklearn -.-> lab-71097{{"使用 Scikit - Learn 进行监督学习"}} end

最近邻分类

在这一步中,我们将探索最近邻分类的概念,以及如何使用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)。这些技术使我们能够从高维观测中预测输出变量,并将数据分类为不同的类别。通过将这些技术应用于实际数据集,我们可以在医疗保健、金融和社会科学等各个领域获得见解并进行预测。