目录

分类算法(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)
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
小哲会魔法18 分钟前
冒泡排序、插入排序、快速排序、堆排序、希尔排序、归并排序
数据结构·算法·排序算法
lskkkkkkkkkkkk20 分钟前
强化学习的数学原理(六) Stochastic Approximation & Stochastic Grandient Descent
数学·算法·强化学习
triticale23 分钟前
【数论】线性筛质数
java·算法
可爱美少女33 分钟前
Kaggle-Disaster Tweets-(二分类+NLP+模型融合)
自然语言处理·分类·数据挖掘
明月看潮生1 小时前
青少年编程与数学 02-016 Python数据结构与算法 17课题、数论算法
python·算法·青少年编程·数论·编程与数学
合合技术团队1 小时前
TextIn ParseX文档解析参数使用指南(第一期)
大数据·人工智能·算法·ocr·文档解析
懒懒小徐1 小时前
大厂面试:六大排序
算法·排序算法
努力学习的小廉1 小时前
【C++】 —— 笔试刷题day_18
开发语言·c++·算法
椰萝Yerosius2 小时前
[图论]生成树 引言
算法·图论
月亮被咬碎成星星2 小时前
LeetCode[28]找出字符串中第一个匹配项的下标(KMP版本)
算法·leetcode