K近邻算法介绍及numpy实现
时间: 2024-09-24 17:11:53 浏览: 59
K近邻(K-Nearest Neighbors, KNN)算法是一种基于实例的学习方法,简单来说就是根据新样本在特征空间中的位置,将其分类为最接近它的K个训练样本所属类别中最常见的那个。这个算法不需要对数据做任何假设,适用于各种分类任务。
在NumPy中实现KNN算法,首先需要准备好数据集,包括训练集的特征数组和对应的标签。以下是一个基本步骤:
1. **导入所需的库**:你需要`numpy`, `pandas`以及可能的数据可视化库如`matplotlib`。
```python
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
```
2. **数据预处理**:加载数据并分割成训练集和测试集。
```python
# 加载数据(这里假设你有数据框df)
X = df.drop('target', axis=1)
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
3. **计算距离**:对于每个测试样本,找到其在训练集中的k个最近邻居,通常使用欧氏距离或其他相似度函数。
```python
def euclidean_distance(x1, x2):
return np.sqrt(np.sum((x1 - x2) ** 2))
distances = []
for i in range(len(X_test)):
distances.append([euclidean_distance(X_test[i], X_train[j]), j] for j in range(len(X_train)))
```
4. **排序和选择K个最近邻居**:将上述距离列表排序,并选取前K个最近的邻居。
5. **预测**:基于这K个邻居的标签,预测新样本的类别,最常见的类别即为预测结果。
6. **评估模型**:通过比较预测结果和实际标签来评估模型性能。
阅读全文