k最近邻(kNN)算法是机器学习中最简单、最易于理解的分类算法之一。它基于实例之间的距离度量来进行分类,并且没有显式的训练过程。本文将介绍k最近邻算法的基本原理和使用方法,并通过一个示例来说明其应用过程。
k最近邻算法的原理非常简单:给定一个未知样本,将其与训练集中的实例进行距离度量,取距离最近的k个实例,根据这k个实例的类别进行投票,将未知样本归为票数最多的类别。
下面通过一个简单的示例来演示k最近邻算法的应用过程。假设我们有一个手写数字的训练集,每个样本表示一个数字图像,并标有对应的数字标签。我们要对一个未知的手写数字图像进行分类,判断它表示的是哪个数字。
pythonCopy codeimport numpy as np
from sklearn.neighbors import KNeighborsClassifier
# 准备训练集
X_train = np.array([[1, 1], [1, 2], [2, 1], [6, 6], [7, 7], [8, 6]])
y_train = np.array([0, 0, 0, 1, 1, 1])
# 创建kNN分类器
knn = KNeighborsClassifier(n_neighbors=3)
# 训练分类器
knn.fit(X_train, y_train)
# 准备测试样本
X_test = np.array([[2, 2], [7, 8]])
# 对测试样本进行分类预测
y_pred = knn.predict(X_test)
# 输出预测结果
print("预测结果:", y_pred)
在上述示例代码中,我们首先准备了一个包含两个特征的训练集X_train
和对应的类别标签y_train
。然后,我们使用KNeighborsClassifier
类创建了一个k最近邻分类器,并指定了参数n_neighbors=3
,表示我们要选择3个最近邻。 接下来,我们调用fit()
方法训练分类器,并准备了一个测试样本X_test
,其中包含两个未知的手写数字图像。 最后,我们调用predict()
方法对测试样本进行分类预测,并将预测结果存储在变量y_pred
中。最终,我们输出了预测结果。
k最近邻(kNN)算法是一种简单而强大的分类算法,它不需要显式的训练过程,只需根据实例之间的距离进行分类。本文介绍了k最近邻算法的基本原理和应用步骤,并通过示例代码演示了算法的具体应用过程。希望读者通过本文对k最近邻算法有更深入的理解,能够在实际问题中灵活运用该算法进行分类任务。
下面是使用Python和scikit-learn库进行鸢尾花分类的示例代码:
pythonCopy codeimport numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 导入鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建kNN分类器
knn = KNeighborsClassifier(n_neighbors=3)
# 训练分类器
knn.fit(X_train, y_train)
# 对测试集进行分类预测
y_pred = knn.predict(X_test)
# 评估分类器性能
accuracy = accuracy_score(y_test, y_pred)
print("分类器准确率:", accuracy)
在上述示例代码中,首先导入了所需的库:numpy
用于处理数据,load_iris
函数用于加载鸢尾花数据集,train_test_split
函数用于划分训练集和测试集,KNeighborsClassifier
类用于创建kNN分类器,accuracy_score
函数用于评估分类器的准确率。 接下来,通过load_iris
函数加载鸢尾花数据集,并将特征矩阵和类别向量存储在变量X
和y
中。 然后,使用train_test_split
函数将数据集划分为训练集和测试集。这里设定测试集占比为0.2,并设置随机种子为42,以保证每次运行结果一致。 接下来,创建一个k值为3的kNN分类器。 然后,使用fit
方法训练分类器,并使用predict
方法对测试集进行分类预测,将预测结果存储在变量y_pred
中。 最后,使用accuracy_score
函数计算分类器的准确率,并输出结果。
k最近邻(kNN)算法是一种简单而有效的分类算法,但它也存在一些缺点。下面将详细介绍k最近邻算法的缺点,并列出一些与kNN类似的算法。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。