欢迎访问宙启技术站
智能推送

Python如何实现KNN算法

发布时间:2023-05-15 13:09:08

KNN算法是一种基本的分类和回归算法,在机器学习中应用广泛。KNN算法最基本的思想是:给定一个训练数据集,对于输入的新实例,在训练数据集中找到与该实例距离最近的k个实例,然后根据这k个实例的类别来进行分类。本文将介绍如何使用Python实现KNN算法。

1.数据集准备

首先,我们需要准备一个数据集。这个数据集可以是一个CSV或文本文件,例如我们有一个以下数据集:

0.3,1.0,1

0.9,0.2,0 

0.1,0.8,1 

0.4,0.3,0 

0.5,0.1,1 

0.7,0.9,0 

0.6,0.2,1 

0.8,0.4,0 

其中,每行表示一个实例,每个实例有两个属性(前两列)和一个类别(最后一列)。

2.加载数据集

我们可以使用Python的pandas库来加载数据集,并将其拆分为属性和目标变量。具体代码如下:

import pandas as pd

 

# 加载数据集

dataset = pd.read_csv('dataset.csv', header=None)

X = dataset.iloc[:, :-1].values # 获取属性值

y = dataset.iloc[:, 2].values # 获取目标变量

3.特征归一化

当属性数据的数值范围差异很大时,我们需要对数据进行归一化处理,以便更好地使用KNN算法。这里我们可以使用scikit-learn库的StandardScaler类对属性值进行标准化处理。具体代码如下:

from sklearn.preprocessing import StandardScaler

 

# 标准化属性值

scaler = StandardScaler()

X = scaler.fit_transform(X)

4.划分数据集

我们需要将数据集划分为训练数据和测试数据,以便评估模型的性能。我们将80%的数据用于训练,20%的数据用于测试。具体代码如下:

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, random_state=None)

5.定义KNN模型

我们可以使用scikit-learn库的KNeighborsClassifier类定义KNN模型。对于KNN算法,关键参数是k的取值,即KNN中的邻居个数。在这里,我们将k设置为3。具体代码如下:

from sklearn.neighbors import KNeighborsClassifier

 

# 定义KNN模型

k = 3

knn = KNeighborsClassifier(n_neighbors=k)

6.训练模型

使用KNN算法的模型可以在训练数据集上进行训练,使用fit()方法。具体代码如下:

# 训练KNN模型

knn.fit(X_train, y_train)

7.测试模型

训练模型后,我们可以使用测试数据集对KNN模型进行评估。我们可以使用score()方法计算模型的准确率。具体代码如下:

# 测试KNN模型

accuracy = knn.score(X_test, y_test)

print("KNN模型在测试数据集上的准确率为:{:.2f}%".format(accuracy*100))

8.预测新数据

我们可以使用KNN模型对新数据进行预测。对于我们的数据集,我们可以使用以下代码预测一个新实例的类别:

# 预测新数据

new_data = [[0.6, 0.5]]

new_data_scaled = scaler.transform(new_data)

prediction = knn.predict(new_data_scaled)

print("新数据的类别为:{}".format(prediction))

在这里,我们首先将新实例标准化处理,然后通过KNN模型对其进行预测。

总结

KNN算法是一种基本的机器学习算法,在分类和回归问题中都有广泛的应用。Python中的scikit-learn库提供了一个简单的API来使用KNN算法,这使得实现KNN模型非常容易。在本文中,我们了解了如何使用Python实现KNN算法,从数据集准备到结果展示,了解了如何在Python中使用scikit-learn库来实现KNN算法。