【机器学习】KNN算法-鸢尾花种类预测

KNN算法-鸢尾花种类预测

文章目录

K最近邻(K-Nearest Neighbors,KNN)算法是一种用于模式识别和分类的简单但强大的机器学习算法。它的工作原理非常直观:给定一个新数据点,KNN算法会查找离这个数据点最近的K个已知数据点,然后基于这K个最近邻数据点的类别来决定新数据点的类别。简而言之,KNN算法通过周围数据点的多数投票来决定新数据点所属的类别。KNN常用于分类问题,如图像分类、文本分类、垃圾邮件检测等。它也可以用于回归问题,称为K最近邻回归(K-Nearest Neighbors Regression),用于预测数值型输出。

1. 数据集介绍

Iris数据集是常用的分类实验数据集,由Fisher,1936搜集整理。Iris也称为鸢尾花数据集,是一类多重变量分析的数据集。关于数据集的介绍:

  • 实例数量:150个,三种各有50个
  • 属性数量:4个,数值型,数值型,帮助预测的属性和类
  • Attribute Information:
    • 萼片长度,萼片宽度,花瓣长度,花瓣宽度 cm
    • 山鸢尾,变色鸢尾,维吉尼亚鸢尾

以下是代码、注释以及输出:

python 复制代码
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# K---近邻算法
def KNN_demo():
    """
    sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')
    n_neighbors:int可选,默认为5,k_neighbors查询默认使用的邻居数
    algorithm:{'auto','ball_tree','kd_tree','brute'},可选用于计算最近邻居的算法:'ball_tree'将会使用BallTree,'kd_tree'
    将会使用KDTree。'auto'将尝试根据传递给fit方法的值来决定最合适的算法。(不同实现方式影响效率)
    :return:
    """
    # 获取数据
    iris = load_iris()
    # 划分数据集
    x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state= 6)
    # 特征工程 标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    # KNN算法预估器
    estimator = KNeighborsClassifier(n_neighbors= 3)
    estimator.fit(x_train, y_train)
    # 模型评估
    # 方法一:
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)
    # 方法二:
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)
    return None

if __name__ == "__main__":
    KNN_demo()
    pass
y_predict:
 [0 2 0 0 2 1 1 0 2 1 2 1 2 2 1 1 2 1 1 0 0 2 0 0 1 1 1 2 0 1 0 1 0 0 1 2 1
 2]
直接比对真实值和预测值:
 [ True  True  True  True  True  True False  True  True  True  True  True
  True  True  True False  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True False  True
  True  True]
准确率为:
 0.9210526315789473

2. KNN优缺点:

  • 优点:简单,易于实现,不需训练
  • 缺点:懒惰算法,对测试样本分类时计算量大,内存开销大;必须指定K值,K值选择不当则分类精度不能保证。
  • 使用场景:小数据场景,几千~几万样本,具体场景具体业务去测试。
相关推荐
302wanger3 分钟前
ARTS-算法-长度最小的子数组
算法
訾博ZiBo9 分钟前
AI日报 - 2025年3月7日
人工智能
梓羽玩Python12 分钟前
一夜刷屏AI圈!Manus:这不是聊天机器人,是你的“AI打工仔”!
人工智能
Gene_INNOCENT13 分钟前
大型语言模型训练的三个阶段:Pre-Train、Instruction Fine-tuning、RLHF (PPO / DPO / GRPO)
人工智能·深度学习·语言模型
游戏智眼13 分钟前
中国团队发布通用型AI Agent产品Manus;GPT-4.5正式面向Plus用户推出;阿里发布并开源推理模型通义千问QwQ-32B...|游戏智眼日报
人工智能·游戏·游戏引擎·aigc
挣扎与觉醒中的技术人15 分钟前
如何优化FFmpeg拉流性能及避坑指南
人工智能·深度学习·性能优化·ffmpeg·aigc·ai编程
watersink18 分钟前
Dify框架下的基于RAG流程的政务检索平台
人工智能·深度学习·机器学习
脑极体21 分钟前
在MWC2025,读懂华为如何以行践言
大数据·人工智能·华为
DeepBI24 分钟前
AI+大数据:DeepBI重构竞品分析新思路
人工智能
KoiC26 分钟前
内网环境部署Deepseek+Dify,构建企业私有化AI应用
linux·人工智能·ubuntu·docker·大模型·ai应用·deepseek