分类算法(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)
相关推荐
Yokon_D7 分钟前
二分类精度指标计算
人工智能·分类·数据挖掘
独自破碎E7 分钟前
【手撕真题】合并区间
算法
big_rabbit05029 分钟前
[算法][力扣110]平衡二叉树
数据结构·算法·leetcode
二年级程序员16 分钟前
排序(五)“计数排序” 与 “各排序实际用时测量”
c语言·算法·排序算法
nap-joker19 分钟前
【表格+图像融合+多模态分类标签不一致问题】TNF:多模态医学数据分类的三分支神经融合
人工智能·分类·数据挖掘·多模态融合·图像+表格模态融合·三分支神经网络
松☆24 分钟前
C++ 程序设计基础:从 Hello World 到数据类型与 I/O 流的深度解析
c++·算法
今儿敲了吗27 分钟前
41| 快速乘
数据结构·c++·笔记·学习·算法
ysa05103031 分钟前
树的定向(dfs并查集贪心)
数据结构·c++·笔记·算法·深度优先·图论
mjhcsp1 小时前
C++ A* 算法:启发式路径搜索的黄金标准
android·c++·算法
阿钱真强道1 小时前
06 Python 数据分析入门:集中趋势与离散程度
python·数据挖掘·数据分析·pandas·可视化·python入门·统计学