Python代码实现KNN算法

  • Post category:Python

Python代码实现KNN算法

KNN(K-Nearest Neighbors)是一种常用的分类算法,它的基本思想是:对于一个未知样本,找与最近的K个已知样本,然后根据这K个样本的类别进行分类。Python中,可以使用scikit-learn库实现KNN分类算法。本文将详细讲解Python实现KNN分类算法的完整攻略,包括算法原理、Python实现过程和示例。

算法原理

KNN算法的基本思想是:对于一个未知样本,找到与其最近的K个已知样本,然后根据这K个样本的类别进行分类。KNN算法的实现过程如下:

  1. 计算未知样本每个已知样本之间的距。
  2. 选取距离最近的K个已知样本。
  3. 根据这K个样本类别进行分类,通常采用数表决法。

Python实现过程

在Python中,可以使用scikit-learn库实现KNN分类算法。以下是使用scikit-learn库实现KNN分类算法的示例代码:

from sklearn.neighbors import KNeighborsClassifier

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
X_train = [[0, 0], [1, 1], [2, 2], [3, 3]]
y_train = [0, 0, 1, 1]
knn.fit(X_train, y_train)

# 预测新样本
X_test = [[1.5, 1.5], [2.5, 2.5]]
y_pred = knn.predict(X_test)

# 输出预测结果
print(y_pred)

上述代码中,首先导入KNeighborsClassifier类。然后,创建KNN分类器,设置K值为3。接着,使用训练数据训练模型。最后,使用测试数据进行预测,并输出预测结果。

示例1:鸢尾花分类

假设有一组鸢尾花数据,包括花萼长度、花萼宽度、花瓣长度和花瓣宽度等特征需要使用KNN算法对其进行分类。可以使用以下代码实现:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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.3, random_state=42)

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 预测新样本
y_pred = knn.predict(X_test)

# 输出预测准确率
print("Accuracy: ", accuracy_score(y_test, y_pred))

执行上述代码后,可以得到以下输出结果:

Accuracy:  0.9777777777777777

示例2:手写数字识别

假设有一组手写数字数据,需要使用KNN算法对其进行分类。可以使用以下代码实现:

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.neighbors import KNeighborsClassifier

# 加载数据
digits = load_digits()
X = digits.data
y = digits.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 预测新样本
y_pred = knn.predict(X_test)

# 输出预测准确率
print("Accuracy: ", accuracy_score(y_test, y_pred))

执行上述代码后,可以得到以下输出结果:

Accuracy:  0.9888888888888889

总结

本文详细讲解了Python实现KNN分类算法的完整攻略,包括算法原理、Python实现过程和示例。KNN算法是一种常用的分类算法,它的基本思想是:对于一个未知样本,到与其最近的K个已样本,然后根据这K个样本的类别进行分类。在Python中,可以使用scikit-learn库实现KNN分类算法,具体实现过程如上述所示。通过示例,我们看到KNN算法在实应用中的灵活性和实用。