1. 算法概述
K近邻(K-Nearest Neighbors,KNN)算法是一种简单的监督学习算法,它的工作原理是:给定一个训练集,当需要预测一个新的数据点时,算法会找到训练集中与该数据点最相似的K个邻居,然后根据这K个邻居的标签来预测新数据点的标签。
2. 实现步骤
2.1 导入必要的库
import numpy as np
from collections import Counter
2.2 计算距离
def euclidean_distance(x1, x2):
"""
计算两个点之间的欧几里得距离
"""
return np.sqrt(np.sum((x1 - x2) ** 2))
2.3 选择邻居
def get_neighbors(train_data, test_data, num_neighbors):
"""
获取测试数据点最近的num_neighbors个邻居
"""
distances = []
for train_sample in train_data:
dist = euclidean_distance(test_data, train_sample)
distances.append((train_sample, dist))
distances.sort(key=lambda x: x[1])
neighbors = distances[:num_neighbors]
return neighbors
2.4 预测标签
def predict_classification(train_data, test_data, num_neighbors):
"""
使用KNN算法进行分类预测
"""
neighbors = get_neighbors(train_data, test_data, num_neighbors)
output_values = [i[0][-1] for i in neighbors]
prediction = Counter(output_values).most_common(1)
return prediction[0][0]
2.5 训练模型
def train_model(train_data):
"""
训练KNN模型
"""
return train_data
2.6 测试模型
def test_model(test_data, train_data, num_neighbors):
"""
测试KNN模型
"""
predictions = []
for test_sample in test_data:
prediction = predict_classification(train_data, test_sample, num_neighbors)
predictions.append(prediction)
return predictions
3. 示例
# 创建一个简单的训练集
train_data = [
[2, 3],
[3, 4],
[3, 5],
[5, 4],
[5, 5]
]
# 创建一个测试集
test_data = [
[4, 4],
[6, 4],
[7, 4]
]
# 训练模型
train_data = train_model(train_data)
# 测试模型
predictions = test_model(test_data, train_data, 2)
# 打印预测结果
print(predictions)
4. 总结
本文详细介绍了使用Python实现KNN算法的步骤,包括导入必要的库、计算距离、选择邻居、预测标签、训练模型和测试模型。通过示例代码,读者可以了解KNN算法的实现过程。在实际应用中,可以根据具体需求调整算法参数,以达到更好的预测效果。
