首页 > 文章列表 > Python中的KNN实例

Python中的KNN实例

PythonKNN实例
338 2023-06-11

KNN算法是一种被广泛使用的机器学习算法,它是一种非参、无模型的算法,不需要对数据进行预处理,能够学习拟合数据的特征,适用于分类和回归问题。Python中的KNN算法实现很简单,本文将介绍如何用Python实现一个KNN算法实例。

数据集准备

首先,我们需要准备一个数据集,可以使用已有数据集,也可以自己生成。本文中,我们使用sklearn中的数据集iris,代码如下:

from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target

其中,X为输入特征,y为输出标签。接下来,我们需要将数据集划分为训练集和测试集:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

KNN算法实现

KNN算法的实现步骤如下:

  1. 计算测试样本与训练样本的距离
  2. 找出距离测试样本最近的K个训练样本
  3. 根据K个训练样本的标签,确定测试样本的标签

具体实现如下:

import numpy as np

def knn(X_train, y_train, x_test, k):
    distances = []
    for i in range(len(X_train)):
        distance = np.sqrt(np.sum(np.square(x_test - X_train[i])))
        distances.append((distance, y_train[i]))
    distances.sort(key=lambda x: x[0])
    neighbors = distances[:k]
    counts = {}
    for i in range(len(neighbors)):
        label = neighbors[i][1]
        counts[label] = counts.get(label, 0) + 1
    sorted_counts = sorted(counts.items(), key=lambda x: x[1], reverse=True)
    return sorted_counts[0][0]

其中,X_train和y_train为训练集特征和标签,x_test为测试集特征,k为K值。此函数的输出为测试样本的预测标签。

模型评估

最后,我们可以用测试集对模型进行评估:

y_pred = []
for i in range(len(X_test)):
    label = knn(X_train, y_train, X_test[i], k=5)
    y_pred.append(label)
accuracy = np.sum(y_pred == y_test) / len(y_test)
print('Accuracy:', accuracy)

此处我们使用k=5进行模型评估,可以看到,该模型的预测精度为95%。

总结

本文使用Python实现了一个KNN算法实例,该实例可用于分类和回归问题。在实现过程中,我们涉及到数据集切分、特征提取、距离计算、K值确定等问题。KNN算法简单易懂,易于实现,也易于改进。对于学习机器学习初学者来说,是一个不错的入门算法。