使用 Python 中的 `sklearn` 库实现 KNN 分类

Scikit-Learn

      • 使用 Python 中的 `sklearn` 库实现 KNN 分类
        • 安装 `sklearn` 库
        • 导入库并准备数据
        • 使用 `sklearn` 实现 KNN 分类
        • 详细说明
        • 重点内容

使用 Python 中的 sklearn 库实现 KNN 分类

K最近邻(K-Nearest Neighbors, KNN)是一种简单且有效的分类算法。在 Python 中,我们可以使用 sklearn 库(也称为 Scikit-Learn)轻松实现 KNN 分类。sklearn 库提供了丰富的机器学习算法,并且封装了许多底层实现,使得我们可以专注于算法的应用和调优,而无需编写底层代码。

安装 sklearn

如果还没有安装 sklearn 库,可以使用以下命令进行安装:

pip install scikit-learn
导入库并准备数据

首先,我们需要导入必要的库,并准备数据集。在这个示例中,我们将使用 sklearn 自带的鸢尾花数据集(Iris dataset)。

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

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

# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
使用 sklearn 实现 KNN 分类

在准备好数据后,我们可以使用 KNeighborsClassifier 进行 KNN 分类。

# 初始化 KNN 分类器,指定 k 值
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 进行预测
y_pred = knn.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
详细说明
  1. 安装 sklearn
    使用 pip install scikit-learn 命令安装该库。

  2. 加载数据集

    from sklearn.datasets import load_iris
    iris = load_iris()
    X, y = iris.data, iris.target
    

    我们使用 load_iris 方法加载鸢尾花数据集。

  3. 分割数据集

    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
    

    使用 train_test_split 方法将数据集分为训练集和测试集,其中 30% 的数据用于测试。

  4. 数据标准化

    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    X_train = scaler.fit_transform(X_train)
    X_test = scaler.transform(X_test)
    

    标准化数据有助于提高模型的性能。我们使用 StandardScaler 进行数据标准化。

  5. 初始化 KNN 分类器

    from sklearn.neighbors import KNeighborsClassifier
    knn = KNeighborsClassifier(n_neighbors=3)
    

    我们初始化一个 KNN 分类器,并指定 k=3

  6. 训练模型

    knn.fit(X_train, y_train)
    

    使用训练集训练模型。

  7. 进行预测并计算准确率

    from sklearn.metrics import accuracy_score
    y_pred = knn.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
    print(f"Accuracy: {accuracy * 100:.2f}%")
    

    使用测试集进行预测,并计算模型的准确率。

重点内容
  • 安装 sklearn:通过 pip install scikit-learn 安装库。
  • 分割数据集:使用 train_test_split 方法分割数据集为训练集和测试集。
  • 数据标准化:使用 StandardScaler 对数据进行标准化处理。
  • 初始化 KNN 分类器:使用 KNeighborsClassifier 初始化分类器。
  • 训练模型:使用训练集训练 KNN 模型。
  • 进行预测并计算准确率:使用测试集进行预测,并计算模型的准确率。

使用 sklearn 库,我们可以轻松地实现 KNN 分类,并快速进行模型的训练、预测和评估。这种方法不仅简化了代码编写,还提高了开发效率,是机器学习实践中非常实用的工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/785115.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Chain-of-Verification Reduces Hallucination in Lagrge Language Models阅读笔记

来来来,继续读文章了,今天这个是meta的研究员们做的一个关于如何减少LLM得出幻觉信息的工作,23年底发表。文章链接:https://arxiv.org/abs/2309.11495 首先,这个工作所面向的LLM的问答任务,是list-based q…

怎样优化 PostgreSQL 中对日期时间范围的模糊查询?

文章目录 一、问题分析(一)索引未有效利用(二)日期时间格式不统一(三)复杂的查询条件 二、优化策略(一)使用合适的索引(二)规范日期时间格式(三&a…

前沿重器[53] | 聊聊搜索系统6:精排

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经…

IDEA启动tomcat之后控制台出现中文乱码问题

方法1: 第一步:file--setting--Editor--File Encodings 注意页面中全部改为UTF-8,然后apply再ok 第二步:Run--Edit Configuration,将VM options输入以下值: -Dfile.encodingUTF-8 还是一样先apply再ok …

视频图文理解关联技术与创业团队(二)

上一篇:google gemini1.5 flash视频图文理解能力初探(一)提到了gemini 1.5 flash 可以对视频进行理解以及分析,但是整体在检索任务上效果不佳。 这几天参加了人工智能大会 网上收集,看一看有相似能力的一些技术点、创…

生物素化果胶粒子包裹药物阿霉素;DOX/Bio-PEC

生物素化果胶粒子包裹药物阿霉素(DOX/Bio-PEC)是一种新型的药物载体系统,结合了生物素和果胶多糖的优势,旨在提高药物的靶向性和控释性能。以下是对该系统的详细解析: 一、生物素化果胶粒子的制备 原理与步骤&#xff…

独立开发者系列(22)——API调试工具apifox的使用

接口的逻辑已经实现,需要对外发布接口,而发布接口的时候,我们需要能自己简单调试接口。当然,其实自己也可以写简单的代码调试自己的接口,因为其实就是简单的request请求或者curl库读取,调整请求方式get或者…

甄选范文“论区块链技术及应用”,软考高级论文,系统架构设计师论文

论文真题 区块链作为一种分布式记账技术,目前已经被应用到了资产管理、物联网、医疗管理、政务监管等多个领域。从网络层面来讲,区块链是一个对等网络(Peer to Peer, P2P),网络中的节点地位对等,每个节点都保存完整的账本数据,系统的运行不依赖中心化节点,因此避免了中…

MATLAB基础应用精讲-【数模应用】分层聚类(附python代码实现)

目录 前言 知识储备 层次聚类 1. 算法解读: 2. 步骤和细节: 3. 举例: 4. 算法评价: 5. 算法的变体: 算法原理 基本思想 分层聚类网络的原理 分层聚类网络的优势 分层聚类网络的应用领域 SPSSAU 分层聚类案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果…

Johnson Counter

目录 描述 输入描述: 输出描述: 参考代码 描述 请用Verilog实现4位约翰逊计数器(扭环形计数器),计数器的循环状态如下。 电路的接口如下图所示。 输入描述: input clk , input …

[氮化镓]Kevin J. Chen组新作—肖特基p-GaN HEMTs正栅ESD机理研究

这篇文章是发表在《IEEE Electron Device Letters》上的一篇关于Schottky型p-GaN栅极高电子迁移率晶体管(HEMTs)的正向栅极静电放电(ESD)机理研究的论文。文章由Jiahui Sun等人撰写,使用了基于碳化硅(SiC&a…

设计模式探索:观察者模式

1. 观察者模式 1.1 什么是观察者模式 观察者模式用于建立一种对象与对象之间的依赖关系,当一个对象发生改变时将自动通知其他对象,其他对象会相应地作出反应。 在观察者模式中有如下角色: Subject(抽象主题/被观察者&#xf…

第11章 规划过程组(二)(11.10制订进度计划)

第11章 规划过程组(二)11.10制订进度计划,在第三版教材第395~397页;文字图片音频方式 第一个知识点:定义及作用 分析活动顺序、持续时间、资源需求和进度制约因素,创建项目进度模型,从而落实项目…

六、数据可视化—Wordcloud词云(爬虫及数据可视化)

六、数据可视化—Wordcloud词云(爬虫及数据可视化) 也是一个应用程序 http://amueller.github.io/word_cloud/ Wordcloud词云,在一些知乎,论坛等有这样一些东西,要么做封面,要么做讲解,进行分析…

Java并发/多线程CompleteableFuture详解

目录 CompleteableFuture 创建 获得结果的方法 辅助方法 allOf和anyOf的区别 CompletableFuture 里大约有五十种方法,但是可以进行归类: 变换类 thenApply 消费类 thenAccept 执行操作类 thenRun thenApply/thenAccept/thenRun 结合转化类 thenCombine 结…

浅析Nginx技术:开源高性能Web服务器与反向代理

什么是Nginx? Nginx是一款轻量级、高性能的HTTP和反向代理服务器,也可以用作邮件代理服务器。它最初由俄罗斯的程序员Igor Sysoev在2004年开发,并于2004年首次公开发布。Nginx的主要优势在于其非阻塞的事件驱动架构,能够处理大量并…

python-24-零基础自学python while循环+交互+数据的存储

学习内容:《python编程:从入门到实践》第二版 知识点: 文件处理 with open()while 练习内容:10章练习题10-3、10-4、10-5 练习10-3:访客 编写一个程序,提示用户输入名字。用户做…

北森锐途人才竞聘盘点管理测评:高管领导力六大评判标准深度解析万达商管中国绿发等

北森锐途人才管理测评:高管领导力评判标准深度解析 在企业高管的盘点与竞聘测评领域,众多管理人才面临评估自身领导力的挑战。面对能力卓越、职级显赫的同僚,许多管理者感到缺乏一套权威且专业的评价体系。然而,无论是天赋异禀的领…

【回溯 - 1】46. 全排列

46. 全排列 难度:中等 力扣地址:https://leetcode.cn/problems/permutations/description/ 问题描述 给定一个 不含重复数字 的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nu…

ICMP隧道

后台私信找我获取工具 目录 ICMP隧道作用 ICMP隧道转发TCP上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 执行后门木马,本地上线 ICMP隧道转发SOCKS上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 ​执行后…