• 分类算法(KNN算法)


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

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

    1.计算训练集中每个样本和待分类对象之间的距离。
    2.选取距离待分类对象最近的k个训练样本。
    3.统计这k个样本中出现最多的类别。
    4.将待分类对象归为出现最多的类别。

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

    1.计算训练集中每个样本和待预测对象之间的距离。
    2.选取距离待预测对象最近的k个训练样本。
    3.求这k个样本的平均值。
    4.将待预测对象的预测值设为这个平均值。

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

    代码实现: 

    1. import numpy as np
    2. class KNN:
    3. def __init__(self, k=3):
    4. self.k = k
    5. def euclidean_distance(self, x1, x2):
    6. return np.sqrt(np.sum((x1 - x2)**2))
    7. def fit(self, X, y):
    8. self.X_train = X
    9. self.y_train = y
    10. def predict(self, X):
    11. y_pred = []
    12. for x in X:
    13. distances = [self.euclidean_distance(x, x_train) for x_train in self.X_train]
    14. k_indices = np.argsort(distances)[:self.k]
    15. k_nearest_labels = [self.y_train[i] for i in k_indices]
    16. most_common = Counter(k_nearest_labels).most_common(1)
    17. y_pred.append(most_common[0][0])
    18. return np.array(y_pred)

     

  • 相关阅读:
    【电商】电商后台设计—库存模块
    记一次Redis Cluster Pipeline导致的死锁问题
    LabVIEW中的数据通信方法
    C# 使用Newtonsoft.Json解析嵌套json
    SL9056C 8V~100V 1.5A磁吸灯降压恒流LED驱动芯片
    1.数据库的连接、创建会话与模型
    服务器配置怎么查看
    面试Tip--java创建对象的四种方式
    java----js常用的api
    Github每日精选(第48期):SQLite下的知识库memos
  • 原文地址:https://blog.csdn.net/qq_71356343/article/details/133032916