【实战教程】用scikit-learn玩转KNN:鸢尾花数据集的分类之旅

2024-08-22 13:52

本文主要是介绍【实战教程】用scikit-learn玩转KNN:鸢尾花数据集的分类之旅,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

KNN(K-Nearest Neighbors)算法是一种简单直观的监督学习算法,被广泛应用于分类和回归任务中。本文将带你一步步了解如何使用Python中的scikit-learn库实现KNN算法,并通过鸢尾花数据集来进行实战演练。让我们一起探索如何用KNN算法对鸢尾花进行分类吧!


1. 准备工作

首先,我们需要安装必要的库。如果你还没有安装scikit-learn,可以通过以下命令进行安装:

pip install scikit-learn

接下来,我们导入所需的库:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
2. 加载数据

我们将使用经典的鸢尾花数据集。这个数据集包含了三种不同类型的鸢尾花(Setosa、Versicolor和Virginica)的测量数据,每种类型有50个样本,每个样本包含四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。

iris = datasets.load_iris()
X = iris.data
y = iris.target
3. 数据预处理

为了让模型更好地工作,我们通常需要对数据进行标准化处理。

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
4. 划分数据集

我们将数据分为训练集和测试集,以便评估模型的性能。

X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)
5. 构建KNN模型

现在我们来构建一个KNN分类器。为了找到最佳的K值,我们可以尝试多个K值,并查看它们的表现。

k_values = list(range(1, 31))
accuracies = []for k in k_values:knn = KNeighborsClassifier(n_neighbors=k)knn.fit(X_train, y_train)y_pred = knn.predict(X_test)accuracies.append(accuracy_score(y_test, y_pred))
6. 选择最佳K值

我们可以绘制出不同K值下模型的准确率,以找到最佳的K值。

plt.figure(figsize=(10, 6))
plt.plot(k_values, accuracies, marker='o')
plt.title('Accuracy vs. Number of Neighbors (K)')
plt.xlabel('Number of Neighbors (K)')
plt.ylabel('Accuracy')
plt.grid(True)
plt.show()
7. 模型评估

根据图表找到的最佳K值,我们重新训练模型并评估其性能。

best_k = k_values[np.argmax(accuracies)]
knn_best = KNeighborsClassifier(n_neighbors=best_k)
knn_best.fit(X_train, y_train)
y_pred_best = knn_best.predict(X_test)print(f"Best K value: {best_k}")
print("Classification Report:")
print(classification_report(y_test, y_pred_best))
print("Confusion Matrix:")
print(confusion_matrix(y_test, y_pred_best))
print("Accuracy Score:")
print(accuracy_score(y_test, y_pred_best))
8. 结论

通过本实战教程,我们不仅学会了如何使用scikit-learn库来实现KNN算法,还掌握了如何通过鸢尾花数据集进行分类任务。希望这篇教程能帮助你更好地理解和运用KNN算法!


小贴士:

  • 在选择K值时,要考虑到过拟合与欠拟合的问题。较小的K值可能会导致过拟合,而较大的K值则可能导致欠拟合。
  • 使用交叉验证可以帮助更稳健地选择K值。

如果你喜欢这篇教程,请关注我们的公众号获取更多关于机器学习的精彩内容!


希望这篇实战教程对你有所帮助!如果有任何疑问或想要了解更多细节,欢迎留言讨论。

这篇关于【实战教程】用scikit-learn玩转KNN:鸢尾花数据集的分类之旅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096461

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放