用python实现k近邻算法的示例代码

k近邻算法是一种非常常见的机器学习算法,用于分类和回归问题 。它的基本思想是利用已知的数据集,在新的数据点附近找到k个最近的邻居,并将新的数据点分配给这些邻居中最常见的类别或平均回归值 。在本文中,我们将介绍如何用Python实现k近邻算法,并在实际数据集上进行测试 。
1. 数据集的准备

用python实现k近邻算法的示例代码

文章插图
在本文中,我们将使用Iris数据集,这是一个常用的分类数据集 。该数据集包含3个不同品种的鸢尾花,每个品种有50个样本,共150个样本 。每个样本包含4个特征:花萼长度,花萼宽度,花瓣长度和花瓣宽度 。
我们将使用Python的Pandas库来加载和处理数据 。以下是代码:
```python
import pandas as pd
# 加载数据
data = https://www.ycpai.cn/python/pd.read_csv('iris.csv')
# 分离特征和标签
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
```
2. 数据预处理
在使用k近邻算法之前,我们需要对数据进行一些预处理,以确保它们的值在相似的范围内 。这通常包括将数据标准化或归一化 。
在本文中,我们将使用sklearn库中的StandardScaler进行标准化 。以下是代码:
```python
from sklearn.preprocessing import StandardScaler
# 标准化数据
scaler = StandardScaler()
X = scaler.fit_transform(X)
```
3. 训练模型
现在,我们已经准备好使用k近邻算法来训练我们的模型了 。在Python的sklearn库中,我们可以使用KNeighborsClassifier来实现 。
以下是代码:
```python
from sklearn.neighbors import KNeighborsClassifier
# 创建k近邻分类器对象
knn = KNeighborsClassifier(n_neighbors=5)
# 训练模型
knn.fit(X, y)
```
在这里,我们创建了一个k近邻分类器对象,并将k值设置为5 。然后,我们使用fit方法来训练模型 。
4. 测试模型
现在,我们已经训练好了我们的模型,可以用它来进行预测 。
以下是代码:
```python
# 预测新数据点的标签
new_data = https://www.ycpai.cn/python/[[5.1, 3.5, 1.4, 0.2], [6.2, 3.4, 5.4, 2.3]]
new_data = https://www.ycpai.cn/python/scaler.transform(new_data)
print(knn.predict(new_data))
```
在这里,我们创建了两个新的数据点,并使用transform方法对它们进行了标准化 。然后,我们使用predict方法来预测它们的标签 。
5. 模型评估
为了评估我们的模型的性能,我们可以使用sklearn库中的一些度量标准 。这些度量标准包括准确率,召回率和F1分数等 。
以下是代码:
```python
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 预测测试数据集的标签
y_pred = knn.predict(X_test)
# 计算准确率,召回率和F1分数
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
【用python实现k近邻算法的示例代码】f1 = f1_score(y_test, y_pred, average='macro')
print('Accuracy:', accuracy)
print('Precision:', precision)
print('Recall:', recall)
print('F1 Score:', f1)
```
在这里,我们使用predict方法来预测测试数据集的标签 。然后,我们使用accuracy_score,precision_score,recall_score和f1_score函数计算准确率,召回率和F1分数 。

    推荐阅读