K最近邻
- 1、引言
- 2、决策树
- 2.1 定义
- 2.2 原理
- 2.3 实现方式
- 2.3.1 距离度量
- 2.3.2 K值的选择
- 2.4 算法公式
- 2.5 代码示例
- 3、总结
1、引言
小屌丝:鱼哥, 这么长时间没更新了,是不是得抓紧时间了。
小鱼:最近可都是在忙的呢, 这不正在写着呢。
小屌丝:我这一提醒你,你就说已经开始写了,我要是不提醒你呢
小鱼:不提醒我,那我照样在写啊。
小屌丝:…行啊,鱼哥,你这说的我竟然无力反驳。
小鱼:这就对了哦,今天来分享一下 K最近邻
小屌丝:؏؏☝ᖗ乛◡乛ᖘ☝؏؏
2、决策树
2.1 定义
K最近邻(K-Nearest Neighbors,简称KNN)是一种基本的机器学习分类与回归方法。
基本思想:在特征空间中,如果一个实例的大部分近邻都属于某一个类别,则该实例也属于这个类别。
2.2 原理
KNN算法的原理相对简单。对于给定的测试实例,基于某种距离度量找出训练集中与其最靠近的K个训练实例,然后统计这K个实例中多数属于的类别,并将其作为预测结果。
KNN算法的核心在于两点:
- 如何计算实例之间的距离,
- 如何选择K值。
2.3 实现方式
实现方式有2种,及 距离度量 和 K值选择
2.3.1 距离度量
- 距离度量:常用的距离度量有欧氏距离、曼哈顿距离等。
- 欧氏距离:
(d(x, y) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2})
- 曼哈顿距离:
(d(x, y) = \sum_{i=1}^{n} |x_i - y_i|)
2.3.2 K值的选择
- K值的选择:K值的选择会对预测结果产生很大的影响。如果K值选择过小,可能会导致模型对噪声数据过于敏感;如果K值选择过大,可能会使模型过于简单,忽略数据的局部特征。
2.4 算法公式
在K近邻算法中,我们需要使用距离度量方法来计算样本之间的距离。其中,欧氏距离(Euclidean Distance)是应用广泛的一种距离度量方法。
欧氏距离的计算公式如下:
d(x, y) = √((x1 - y1)² + (x2 - y2)² + ... + (xn - yn)²)
其中,d(x, y)表示点x和点y之间的距离。x1, x2, …, xn是点x的n个维度的坐标,y1, y2, …, yn是点y的n个维度的坐标。
该公式计算的是点x和点y之间的直线距离。
2.5 代码示例
# -*- coding:utf-8 -*-
# @Time : 2024-02-21
# @Author : Carl_DJ
'''
实现功能:
使用scikit-learn库实现的KNN分类器
'''
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
# 预测测试集结果
y_pred = knn.predict(X_test)
# 输出预测结果
print(y_pred)
3、总结
K最近邻算法是一种简单而有效的机器学习算法,适用于多种分类和回归任务。
它基于实例学习,不需要显式的训练过程,而是通过计算测试实例与训练实例之间的距离来进行预测。
然而,KNN算法也存在一些局限性,如对数据的预处理和特征选择较为敏感,计算复杂度较高,特别是当数据集较大时。
因此,在实际应用中,需要根据具体问题和数据集特点来选择合适的算法和参数。
我是小鱼:
- 博客专家;
- 阿里云 专家博主;
- 51CTO博客专家;
- 多个知名企业认证讲师;
- 认证金牌面试官;
- 职场面试培训、职场规划师;
- 多个国内主流技术社区的认证专家博主;
- 多款主流产品(阿里云等)测评一、二等奖获得者;
关注小鱼,学习机器学习领域的知识。