分类算法(KNN算法)

KNN(k-Nearest Neighbors)算法是一种常见的分类和回归算法。它的核心思想是通过计算待分类对象和训练集中已分类对象之间的距离来确定待分类对象所属的类别。其中,k表示选取距离待分类对象最近的k个训练样本,将这些样本的类别作为待分类对象的类别进行判定。

在分类问题中,KNN算法的基本步骤如下:

1.计算训练集中每个样本和待分类对象之间的距离。

2.选取距离待分类对象最近的k个训练样本。

3.统计这k个样本中出现最多的类别。

4.将待分类对象归为出现最多的类别。

在回归问题中,KNN算法的基本步骤如下:

1.计算训练集中每个样本和待预测对象之间的距离。

2.选取距离待预测对象最近的k个训练样本。

3.求这k个样本的平均值。

4.将待预测对象的预测值设为这个平均值。

需要注意的是,KNN算法中的距离度量方式会影响算法的分类或回归结果,一般使用欧氏距离、曼哈顿距离等度量方式。同时,在选择k值时,需要通过交叉验证等方法来确定最优的k值。

代码实现:

python 复制代码
import numpy as np

class KNN:
    def __init__(self, k=3):
        self.k = k
        
    def euclidean_distance(self, x1, x2):
        return np.sqrt(np.sum((x1 - x2)**2))
    
    def fit(self, X, y):
        self.X_train = X
        self.y_train = y
        
    def predict(self, X):
        y_pred = []
        for x in X:
            distances = [self.euclidean_distance(x, x_train) for x_train in self.X_train]
            k_indices = np.argsort(distances)[:self.k]
            k_nearest_labels = [self.y_train[i] for i in k_indices]
            most_common = Counter(k_nearest_labels).most_common(1)
            y_pred.append(most_common[0][0])
        return np.array(y_pred)
相关推荐
phoenix@Capricornus1 小时前
反向传播算法——矩阵形式递推公式——ReLU传递函数
算法·机器学习·矩阵
Inverse1621 小时前
C语言_动态内存管理
c语言·数据结构·算法
数据与人工智能律师1 小时前
虚拟主播肖像权保护,数字时代的法律博弈
大数据·网络·人工智能·算法·区块链
wuqingshun3141592 小时前
蓝桥杯 16. 外卖店优先级
c++·算法·职场和发展·蓝桥杯·深度优先
YouQian7723 小时前
2025春训第十九场
算法
CodeJourney.3 小时前
基于MATLAB的生物量数据拟合模型研究
人工智能·爬虫·算法·matlab·信息可视化
Epiphany.5563 小时前
素数筛(欧拉筛算法)
c++·算法·图论
爱吃涮毛肚的肥肥(暂时吃不了版)3 小时前
项目班——0510——JSON网络封装
c++·算法·json
liang_20263 小时前
【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)
数据结构·笔记·学习·算法·平面·总结
緈福的街口3 小时前
【leetcode】2900. 最长相邻不相等子序列 I
算法·leetcode·职场和发展