返回
让人眼前一亮的k近邻算法(kNN)
人工智能
2024-01-06 11:55:07
好的,以下是根据您的输入生成的专业文章:
kNN 算法是机器学习中最简单的分类算法之一,其核心思想是:
对于一个待分类样本,将它与训练集中所有样本的距离进行计算,并找出距离最小的k个样本,然后根据这k个样本的类别来确定待分类样本的类别。
kNN算法的步骤如下:
- 确定k值。 k值是kNN算法的关键参数,它决定了算法的性能。k值通常是一个较小的整数,一般取值在1到10之间。
- 计算待分类样本与训练集中所有样本的距离。 距离度量方法有很多种,常用的距离度量方法有欧式距离、曼哈顿距离和切比雪夫距离。
- 找出距离最小的k个样本。
- 根据这k个样本的类别来确定待分类样本的类别。 如果k个样本中出现最多的类别为A,那么待分类样本就属于A类。
kNN算法的优点是简单易懂,不需要对数据进行复杂的预处理,也不需要训练模型。因此,在实践中经常被使用。
kNN算法的缺点是当训练集中的数据量很大时,计算量会很大。而且,kNN算法对噪声数据很敏感,噪声数据可能会导致算法的性能下降。
kNN算法在实践中有很多应用,比如图像识别、文本分类、人脸识别等。
下面我们用python简单实现kNN算法。
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 导入数据
data = pd.read_csv('data.csv')
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data.drop('label', axis=1), data['label'], test_size=0.2)
# 创建kNN模型
knn = KNeighborsClassifier(n_neighbors=5)
# 训练模型
knn.fit(X_train, y_train)
# 预测测试集的数据
y_pred = knn.predict(X_test)
# 计算准确率
accuracy = np.mean(y_pred == y_test)
# 打印准确率
print('准确率:', accuracy)
在这个示例中,我们使用sklearn库中的KNeighborsClassifier类来实现kNN算法。KNeighborsClassifier类的n_neighbors参数表示k值。我们使用默认值5作为k值。
我们使用train_test_split函数将数据划分为训练集和测试集。训练集用于训练模型,测试集用于评估模型的性能。
我们使用fit函数训练模型。fit函数将训练集的数据和标签作为输入,并训练模型。
我们使用predict函数预测测试集的数据。predict函数将测试集的数据作为输入,并返回预测的标签。
我们使用np.mean函数计算准确率。准确率是预测正确的样本数除以样本总数。
在这个示例中,准确率为0.95,这表明kNN算法在