Python实现KNN邻近算法

yizhihongxing

Python实现KNN邻近算法的完整攻略

KNN算法是一种常用的机器学习算法,用于分类和回归问题。本文将详细讲解Python实现KNN算法的整个攻略,包括算法原理实现过和示例。

算法原理

KNN算法的基本思想是通过计算待分类样本与训练集中所有样本距离选取距近的k样本,根据这k个样本的类别进行投票,将待分类样归票数多的类别。在回归中,KNN算法的基本思想是通过计算待预测样本与训练集中所有样本的距离,选取距离最近的k个样本,根据这k个样本的值进行平均或加权平均,得到待预测样本的测值。

具体来说算法分为以下几个骤:

. 计待分类样本与训练集中所有样本的距离。
2. 选取距离最近的k个样本。
3. 根据这k个样本的类别进行投票,将待分类样本归为最多的类别。
4. 在回归问题中,根据这k个样本的值进行平均或加权平均,得到待预测样本的预测值。

实现过程

以下是使用Python实现KNN算法的示例代码:

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_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)
        return most_common[0][0]

上述代码中,首先定义了一个euclidean_distance函数,用于计算欧几里得距离。然后定义了一个KNN类,包含fit和predict两个方法在fit中,将训练集和y保存为类属性。在predict方法中,遍历待分类样本X,调用_predict方法进行预测。在_predict方法中,计算待分类样本与训练集中所有样本的距离,选取距离最近的k个样本,根据这k个样本的类别投票,将待分类样本归为票数最多的类别。

示例1

以下是使用KNN算法进行分类的示例代码:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 划分训练集和测试集
X_train, X, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型
knn = KNN(k=3)
knn.fit(X_train, y_train)

# 预测测试集
y_pred = knn.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)

上述代码中,首先使用load_iris函数加载鸢尾数据集。然后StandardScaler对数据进行预处理,将数据进行标准化。接着使用train_test_split函数将数据集划分为训练集和测试集。然后使用KNN类训练模型,并使用predict方法预测测试集。最后使用accuracy_score计算准确率。

示例2

是使用KNN算法进行回归的示例代码:

import as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.preprocessing import StandardScaler

# 加载数据集
boston = load_boston()
X = boston.data
y = boston.target

# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型
knn = KNN(k=3)
knn.fit(X_train, y_train)

# 预测测试集
y_pred = knn.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print('MSE:', mse)

上述代码中,首先使用load_boston函数加载波士顿房价数据集。然后使用StandardScaler对数据进行预处理,将数据进行标准化。接着使用train_test_split函数将数据集划分为训练集和测试集。然后使用KNN类训练模型使用predict方法测测试集。最后使用mean_squared_error函数计算均方差。

总结

本文详细讲解了Python实现KNN算法的整个攻略,包括算法原理、实现过程和示例。KNN算法是一种常用机器学习算法,可以用于分类和回归问题。Python中,可以使用numpy和collections模块实现KNN算法,实现程上述所示。通过示例看到KNN算法在实际应用中的活性和实用性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现KNN邻近算法 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python3安装Scrapy的方法步骤

    下面是Python3安装Scrapy的方法步骤: 1. 安装Python3和pip 首先,我们需要安装Python3和pip。如果你已经安装了Python3和pip,请直接跳到步骤2。 安装Python3请参考官方文档:https://www.python.org/downloads/ 安装pip请参考官方文档:https://pip.pypa.io/en/…

    python 2023年5月14日
    00
  • Python爬虫图片懒加载技术 selenium和PhantomJS解析

    Python爬虫图片懒加载技术 selenium和PhantomJS解析 本文将介绍如何利用Python爬虫对使用懒加载技术的网页上的图片进行爬取。在这里我将使用selenium和PhantomJS解析器作为我们工具。其中selenium是一个流行的Web自动化测试框架,可以模拟用户在浏览器上的各种操作,而PhantomJS是一个无界面的,基于WebKit的…

    python 2023年5月14日
    00
  • Python使用requirements.txt和pip打包批量安装的实现

    Python是广泛应用的编程语言之一,它拥有广泛的第三方库和框架支持,帮助我们快速完成程序开发。然而,当项目规模扩大时,使用的第三方库数量也会逐步增加,手动一个一个安装和管理这些库会变得非常繁琐和困难。此时,使用Python的包管理工具pip和requirements.txt将会使依赖管理变得更加简单。 什么是requirements.txt和pip? re…

    python 2023年5月14日
    00
  • Python制作一个随机抽奖小工具的实现

    接下来我将为你详细讲解“Python制作一个随机抽奖小工具的实现”的完整攻略,包含以下步骤: 第一步:安装必要的库 安装random库:pip install random 第二步:准备数据 假设我们要从以下5名学生中进行抽奖:张三、李四、王五、赵六、钱七。 我们需要将这5名学生的信息存储在一个列表中,代码如下: students = ["张三&q…

    python 2023年5月20日
    00
  • 使用自带的IDLE进行程序调试

    1.打开IDLE,在主菜单选择debug—debugger菜单项,将打开debug control对话框 2.在Python-shell窗口选择file-open菜单项,打开要调试的文件 3.添加断点,鼠标右击选择set-breakpoint菜单项,添加断点的行将以黄色底纹标记,删除断点,选择clear-breakpoint菜单项 4.按快捷键F5执行程…

    python 2023年4月20日
    00
  • 详解Python如何实现输出颜色字体到终端界面

    下面我就来详细讲解一下“详解Python如何实现输出颜色字体到终端界面”的完整攻略。 准备工作 首先,我们需要安装 termcolor 库。打开终端,输入以下命令来安装: pip install termcolor 文字颜色输出 要在终端输出彩色文字,我们可以使用 termcolor 库中的 colored 方法。该方法需要传入两个参数:要输出的文字以及文字…

    python 2023年6月5日
    00
  • 10个顶级Python实用库推荐

    10个顶级Python实用库推荐 Python作为一门广泛应用的编程语言,有着丰富而庞大的生态系统,涵盖了许多领域和应用。在这里,我们为您推荐10个优秀的Python实用库,供您学习和使用。 1. NumPy NumPy是一款基于Python的科学计算库,广泛用于数组处理、矩阵计算等领域。NumPy提供了丰富的数学函数、线性代数运算、傅里叶变换等等功能,它是…

    python 2023年5月19日
    00
  • Tornado协程在python2.7如何返回值(实现方法)

    Tornado是一个高性能的Python Web框架,它支持协程(coroutines)并且基于回调(callbacks)。协程是一种轻量级线程,可用于提高Python中异步编程的效率。在Python 2.7中,Tornado中的协程可以通过两种方法来返回值。 使用tornado.gen.Return 在Python 2.7中,可以使用tornado.gen…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部