【机器学习】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值选择不当则分类精度不能保证。
  • 使用场景:小数据场景,几千~几万样本,具体场景具体业务去测试。
相关推荐
说私域1 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
人工智能·小程序·开源
永洪科技1 小时前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi
shangyingying_11 小时前
关于小波降噪、小波增强、小波去雾的原理区分
人工智能·深度学习·计算机视觉
凌肖战2 小时前
力扣网C语言编程题:在数组中查找目标值位置之二分查找法
c语言·算法·leetcode
weixin_478689762 小时前
十大排序算法汇总
java·算法·排序算法
书玮嘎2 小时前
【WIP】【VLA&VLM——InternVL系列】
人工智能·深度学习
猫头虎2 小时前
猫头虎 AI工具分享:一个网页抓取、结构化数据提取、网页爬取、浏览器自动化操作工具:Hyperbrowser MCP
运维·人工智能·gpt·开源·自动化·文心一言·ai编程
要努力啊啊啊2 小时前
YOLOv2 正负样本分配机制详解
人工智能·深度学习·yolo·计算机视觉·目标跟踪
CareyWYR3 小时前
大模型真的能做推荐系统吗?ARAG论文给了我一个颠覆性的答案
人工智能