简介
本实验将指导你使用 Scikit-learn 实现最近质心分类。最近质心分类是一种简单的分类方法,其工作原理是计算每个类别的质心,然后根据新数据点最接近哪个质心来对其进行分类。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入所需库
首先,我们需要导入必要的库,其中包括 Numpy、Matplotlib、Scikit-learn 数据集、最近质心分类器(NearestCentroid)和决策边界显示工具(DecisionBoundaryDisplay)。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import datasets
from sklearn.neighbors import NearestCentroid
from sklearn.inspection import DecisionBoundaryDisplay
加载数据
接下来,我们从 Scikit-learn 中加载鸢尾花数据集,并仅选择前两个特征用于可视化。
iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target
创建颜色映射
我们使用 Matplotlib 的 ListedColormap 函数创建两个颜色映射用于可视化。
cmap_light = ListedColormap(["orange", "cyan", "cornflowerblue"])
cmap_bold = ListedColormap(["darkorange", "c", "darkblue"])
创建并拟合分类器
我们创建一个收缩阈值为 0.2 的最近质心分类器实例,并对数据进行拟合。
clf = NearestCentroid(shrink_threshold=0.2)
clf.fit(X, y)
预测并评估准确率
我们对输入数据预测类别标签,并评估分类器的准确率。
y_pred = clf.predict(X)
print("Accuracy: ", np.mean(y == y_pred))
可视化决策边界
我们使用 Scikit-learn 中的 DecisionBoundaryDisplay 函数来可视化分类器的决策边界。
_, ax = plt.subplots()
DecisionBoundaryDisplay.from_estimator(
clf, X, cmap=cmap_light, ax=ax, response_method="predict"
)
绘制数据点
我们使用 Matplotlib 的 scatter 函数来绘制输入数据点。
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold, edgecolor="k", s=20)
添加标题和轴标签
我们使用 Matplotlib 的 title、xlabel 和 ylabel 函数为图表添加标题和轴标签。
plt.title("Nearest Centroid Classification")
plt.xlabel("Sepal length")
plt.ylabel("Sepal width")
显示图表
我们使用 Matplotlib 的 show 函数来显示图表。
plt.show()
总结
在本实验中,我们学习了如何使用 Scikit-learn 实现最近质心分类。我们加载了鸢尾花数据集,创建了一个分类器,预测了类别标签,测量了准确率,并可视化了决策边界和输入数据点。