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

推荐文章

  • linux的python如何进行进程管理

    在Linux中,可以使用Python的内置库os和subprocess进行进程管理 使用os.system()执行外部命令: import os # 执行外部命令,例如:ls
    os.system("ls") 使用...

  • linux的python怎样进行系统调用

    在Linux中,Python可以通过os和sys库进行系统调用 使用os库: os库提供了许多与操作系统交互的函数。例如,要使用os.system()执行系统命令,可以这样做:
    i...

  • python中set怎样进行集合排序

    在Python中,可以使用sorted()函数对集合(set)进行排序。sorted()函数返回一个排序后的列表(list),而不是集合,因为集合本身是无序的。以下是一个示例:

  • python中set如何进行集合转换

    在Python中,可以使用集合(set)的内置方法进行集合转换。以下是一些常用的集合转换方法: 将列表转换为集合: my_list = [1, 2, 3, 4, 5]
    my_set = set(m...

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

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

  • k8s怎么进入pod中容器

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

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

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

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

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