117.info
人生若只如初见

knn算法python代码怎么写

下面是一个简单的KNN算法的Python代码示例:

import numpy as np
from collections import Counter

def euclidean_distance(x1, x2):
    return np.sqrt(np.sum((x1 - x2) ** 2))

class KNN:
    def __init__(self, k=3):
        self.k = k
    
    def fit(self, X, y):
        self.X_train = X
        self.y_train = y
    
    def predict(self, X):
        y_pred = [self._predict(x) for x in X]
        return np.array(y_pred)
    
    def _predict(self, x):
        # 计算所有训练样本与待预测样本的距离
        distances = [euclidean_distance(x, x_train) for x_train in self.X_train]
        # 根据距离排序并获取前k个样本的索引
        k_indices = np.argsort(distances)[:self.k]
        # 获取前k个样本的标签
        k_labels = [self.y_train[i] for i in k_indices]
        # 返回出现次数最多的标签作为预测结果
        most_common = Counter(k_labels).most_common(1)
        return most_common[0][0]

使用示例:

X_train = np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]])
y_train = np.array([0, 0, 1, 1, 0, 1])

knn = KNN(k=3)
knn.fit(X_train, y_train)

X_test = np.array([[2, 3], [6, 9], [1, 1]])
y_pred = knn.predict(X_test)

print(y_pred)  # 输出:[0, 1, 0]

这个示例中使用的是欧氏距离作为距离度量方法,同时实现了一个简单的KNN类,其中的fit()方法用于训练模型,predict()方法用于预测新样本的标签。KNN类的_predict()方法用于计算单个样本的预测结果。

未经允许不得转载 » 本文链接:https://www.117.info/ask/feac0AzsLAA9UA1U.html

推荐文章

  • Python链表怎么创建及使用

    在Python中创建链表可以使用节点类和链表类来实现。首先需要定义一个节点类,节点类中包含两个属性,一个是数据域,用来保存节点的数据,另一个是指针域,用来指...

  • python中reverse函数的用法是什么

    在Python中,reverse()函数用于反转列表或字符串的顺序。它是一个内置函数,可以直接使用。具体用法如下: 反转列表的顺序: my_list = [1, 2, 3, 4, 5]
    my...

  • python中的reverse有什么作用

    在Python中,reverse() 是一种用于将列表的元素进行反向排序的方法。它会修改原始列表,而不会创建新的列表。具体来说,reverse() 方法将列表中的第一个元素和最...

  • python链表转换为list怎么实现

    要将一个链表转换为一个列表,可以使用迭代的方法依次遍历链表的节点,并将节点的值添加到列表中。下面是一个示例代码:
    class ListNode: def __init__(sel...

  • 深度学习Deeplearning算法怎么实现

    深度学习算法的实现一般涉及以下几个步骤: 数据准备:收集、清洗和标注数据集。数据集应包含输入特征和对应的标签,用于训练和评估模型。 模型选择:选择合适的...

  • k8s怎么进入pod中容器

    要进入Kubernetes中的Pod容器,可以使用以下命令: 首先,使用kubectl命令获取Pod的名称: kubectl get pods 这将显示所有正在运行的Pod及其名称。 然后,使用以...

  • linux怎么查看磁盘挂载信息

    在Linux系统中,可以使用以下命令来查看磁盘挂载信息: df命令:显示文件系统的磁盘空间使用情况和挂载点。 df -h 这条命令会显示磁盘空间的使用情况以及挂载点。...

  • Neuroph框架的优点和缺点是什么

    Neuroph框架是一个用于构建和训练神经网络的开源Java库。它具有以下优点和缺点:
    优点: 简单易用:Neuroph框架提供了简单而直观的API,使得构建和训练神经...