KNN 算法
KNN算法原理讲解
K 表示“最近邻”的数量,即在进行分类或回归预测时,考虑的周围最近的样本点的个数。
第一个 N 是“Nearest”的缩写,表示“最近的”。
二个 N 是“Neighbors”的缩写,表示“邻居”。
- KNN(K-Nearest Neighbors)是一种基于距离的分类算法,核心思想是“少数服从多数”。
- 步骤:
- 计算新数据与已知数据集中所有点的距离(如欧式距离或曼哈顿距离)。
- 按距离递增排序,选取前K个最近邻。
- 根据K个邻居中多数类别确定新数据的分类。
- K值的重要性:K的取值直接影响分类结果,需谨慎选择(一般不超过20)。
距离度量方法
- 欧式距离:两点间的直线距离,适用于多维空间,公式为平方和开方。
- 曼哈顿距离:横平竖直的路径距离,适用于网格状路径场景,公式为坐标差绝对值的和。
代码实现(鸢尾花分类示例)
- 数据集加载:使用
sklearn.datasets.load_iris()
加载鸢尾花数据集(特征:花萼/花瓣长度/宽度;标签:三类)。 - 数据划分:
train_test_split
按比例(如70%训练集,30%测试集)划分数据,需设置随机种子(random_state
)保证可复现性。 - 模型训练:
- 创建KNN分类器:
KNeighborsClassifier(n_neighbors=5, metric='euclidean')
。 - 拟合数据:
knn.fit(X_train, y_train)
。
- 创建KNN分类器:
- 评估与预测:
- 计算准确率:
knn.score(X_test, y_test)
。 - 预测标签:
knn.predict(X_test)
。
- 计算准确率:
- 数据集加载:使用
关键注意事项
- KNN可用于分类和回归问题,回归时取邻居的平均值。
- 特征需标准化,避免量纲影响距离计算。
- 测试集仅用于最终评估,不可参与训练过程。
问答与互动
- 强调K值选择对结果的影响,并通过示例演示不同K值导致分类结果变化。
- 解释代码中
fit
(拟合)、score
(准确率)、predict
(预测)的作用及参数含义。