Python代码实现KNN算法
KNN(K-Nearest Neighbors)是一种常用的分类算法,它的基本思想是:对于一个未知样本,找与最近的K个已知样本,然后根据这K个样本的类别进行分类。Python中,可以使用scikit-learn库实现KNN分类算法。本文将详细讲解Python实现KNN分类算法的完整攻略,包括算法原理、Python实现过程和示例。
算法原理
KNN算法的基本思想是:对于一个未知样本,找到与其最近的K个已知样本,然后根据这K个样本的类别进行分类。KNN算法的实现过程如下:
- 计算未知样本每个已知样本之间的距。
- 选取距离最近的K个已知样本。
- 根据这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算法在实应用中的灵活性和实用。