分类算法(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)
相关推荐
mit6.82414 分钟前
位运算|拆分贪心
算法
Carl_奕然28 分钟前
【数据挖掘】数据挖掘必会技能之:A/B测试
人工智能·python·数据挖掘·数据分析
ghie909033 分钟前
基于MATLAB的TLBO算法优化实现与改进
开发语言·算法·matlab
恋爱绝缘体133 分钟前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wuk99833 分钟前
VSC优化算法MATLAB实现
开发语言·算法·matlab
Z1Jxxx1 小时前
加密算法加密算法
开发语言·c++·算法
乌萨奇也要立志学C++1 小时前
【洛谷】递归初阶 三道经典递归算法题(汉诺塔 / 占卜 DIY/FBI 树)详解
数据结构·c++·算法
vyuvyucd2 小时前
C++引用:高效编程的别名利器
算法
鱼跃鹰飞2 小时前
Leetcode1891:割绳子
数据结构·算法
️停云️2 小时前
【滑动窗口与双指针】不定长滑动窗口
c++·算法·leetcode·剪枝·哈希