机器学习k近邻算法鸢尾花种类预测(代码片段)

赵广陆 赵广陆     2022-10-23     383

关键词:

目录


1 再识K-近邻算法API

  • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)
    • n_neighbors:
      • int,可选(默认= 5),k_neighbors查询默认使用的邻居数
    • algorithm:‘auto’,‘ball_tree’,‘kd_tree’,‘brute’
      • 快速k近邻搜索算法,默认参数为auto,可以理解为算法自己决定合适的搜索算法。除此之外,用户也可以自己指定搜索算法ball_tree、kd_tree、brute方法进行搜索,
        • brute是蛮力搜索,也就是线性扫描,当训练集很大时,计算非常耗时。
        • kd_tree,构造kd树存储数据以便对其进行快速检索的树形数据结构,kd树也就是数据结构中的二叉树。以中值切分构造的树,每个结点是一个超矩形,在维数小于20时效率高。
        • ball tree是为了克服kd树高维失效而发明的,其构造过程是以质心C和半径r分割样本空间,每个节点是一个超球体。

2 案例:鸢尾花种类预测

2.1 数据集介绍

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

2.2 步骤分析

  • 1.获取数据集
  • 2.数据基本处理
  • 3.特征工程
  • 4.机器学习(模型训练)
  • 5.模型评估

2.3 代码过程

  • 导入模块
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
  • 先从sklearn当中获取数据集,然后进行数据集的分割
# 1.获取数据集
iris = load_iris()

# 2.数据基本处理
# x_train,x_test,y_train,y_test为训练集特征值、测试集特征值、训练集目标值、测试集目标值
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)
  • 进行数据标准化 – 特征值的标准化
# 3、特征工程:标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
  • 模型进行训练预测
# 4、机器学习(模型训练)
estimator = KNeighborsClassifier(n_neighbors=9)
estimator.fit(x_train, y_train)
# 5、模型评估
# 方法1:比对真实值和预测值
y_predict = estimator.predict(x_test)
print("预测结果为:\\n", y_predict)
print("比对真实值和预测值:\\n", y_predict == y_test)
# 方法2:直接计算准确率
score = estimator.score(x_test, y_test)
print("准确率为:\\n", score)

3 案例小结

在本案例中,具体完成内容有:

  • 使用可视化加载和探索数据,以确定特征是否能将不同类别分开。
  • 通过标准化数字特征并随机抽样到训练集和测试集来准备数据。
  • 通过统计学,精确度度量进行构建和评估机器学习模型。

4 KNN算法总结

4.1 k近邻算法优缺点汇总

  • 优点:

    • 简单有效

    • 重新训练的代价低

    • 适合类域交叉样本

      • KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。
    • 适合样本容量比较大的类域自动分类

      • 该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分
      样本量、样本个数与样本容量的关系举例
      
      一个箱子最多能放50个苹果(样本),从中取样30个。
      在这里,苹果是样本,箱子最多能放的个数(即苹果的总数)50是这个样本的样本(容)量,而所抽取的样本个数30则是样本量。
      

  • 缺点:
    • 惰性学习
      • KNN算法是懒散学习方法(lazy learning,基本上不学习),一些积极学习的算法要快很多
    • 类别评分不是规格化
      • 不像一些通过概率评分的分类
    • 输出可解释性不强
      • 例如决策树的输出可解释性就较强
    • 对不均衡的样本不擅长
      • 当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。
    • 计算量较大
      • 目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。

k-近邻算法鸢尾花种类预测(代码片段)

鸢尾花种类预测--数据集介绍1.案例:鸢尾花种类预测2.scikit-learn中数据集介绍2.1scikit-learn数据集API介绍2.1.1sklearn小数据集2.1.2sklearn大数据集2.2sklearn数据集返回值介绍2.3查看数据分布2.4数据集的划分1.案例:鸢尾花种类预... 查看详情

机器学习100天(二十八):028k近邻分类算法-python实现(代码片段)

...iris数据集。iris数据集是常用的分类实验数据集,iris也称鸢尾花数据集,数据集包含150个数据样本,分为3个类别,每类50个样本,每个样本包含4个属性(分别是:花萼长度,花萼宽度,花瓣长度,花瓣宽度)。可通过这4个属性... 查看详情

机器学习k-近邻算法(代码片段)

目录1K-近邻算法简介2K-近邻算法(KNN)2.1定义2.2距离公式3电影类型分析3.1问题3.2K-近邻算法数据的特征工程处理4K-近邻算法API5案例:预测签到位置5.1分析5.2代码5.3结果分析6K-近邻总结1K-近邻算法简介目标说明K-近邻算法的距离... 查看详情

深度学习框架tensorflow模型分析(代码片段)

...划分4sklearn实现5tf.keras实现6总结1快速入门模型机器学习鸢尾花数据集分析:https://blog.csdn.net/ZGL_cyy/article/details/126924746机器学习k近邻算法鸢尾花种类预测:https://blog.csdn.net/ZGL_cyy/article/details/126966990我们通过 查看详情

案例:鸢尾花种类预测--知道sklearn中对数据集的划分方法(代码片段)

...本案例中,将使用K-NearestNeighbor(KNN)算法对鸢尾花的种类进行分类,并测量花的特征。本案例目的:遵循并理解完整的机器学习过程对机器学习原理和相关术语有基本的了解。了解 查看详情

使用knn算法对鸢尾花种类预测(代码片段)

使用KNN算法对鸢尾花种类预测一.数据集介绍1.1小数据集获取load_*1.2大数据集获取fetch_*1.3查看数据分布seaborn画图的二.数据集的划分三.特征工程3.1归一化处理MinMaxScaler3.2标准化StandardScaler四.流程实现4.1导包4.2获取数据集4.3数据基... 查看详情

python-机器学习-k近邻算法的原理与鸢尾花数据集实现详解(代码片段)

算法原理 k近邻法(k-nearestneighbor,k-NN)是一种基本分类与回归方法,由Cover和Hart于1968年提出。分类时,对于新的实例,根据与它最接近的k个训练实例的类别,通过多数表决等方式,进行预测。对新的... 查看详情

k-近邻算法(knn)

...、鞋子尺码数据对应性别导包,机器学习的算法KNN、数据鸢尾花获取训练样本datasets.load_iris()画图研究前两个特征和分类之间的关系(二维散点图只能展示两个维度)第二步预测数据:所预测的数据,自己创造,就是上面所显示... 查看详情

机器学习100天(二十八):028k近邻分类算法-python实现(代码片段)

...iris数据集。iris数据集是常用的分类实验数据集,iris也称鸢尾花数据集,数据集包含150个数据样 查看详情

机器学习100天(二十八):028k近邻分类算法-python实现(代码片段)

...iris数据集。iris数据集是常用的分类实验数据集,iris也称鸢尾花数据集,数据集包含150个数据样 查看详情

机器学习k近邻算法k值的选择(代码片段)

目录1K值选择说明2小结1K值选择说明举例说明:K值过小容易受到异常点的影响过拟合k值过大:受到样本均衡的问题欠拟合K值选择问题,李航博士的一书「统计学习方法」上所说:选择较小的K值,就相当于用... 查看详情

机器学习(算法篇)——k-近邻算法(代码片段)

...法简介K-近邻算法(KNN)概念实现流程k近邻算法api初步使用机器学习流程:Scikit-learn工具介绍Scikit-learn包含的内容K-近邻算法API距离度量欧式距离(EuclideanDistance)曼哈顿距离(ManhattanDistance)切比雪夫距离(ChebyshevDistance)闵可夫斯基距... 查看详情

《机器学习实战》-k近邻算法(代码片段)

目录K-近邻算法k-近邻算法概述解析和导入数据使用Python导入数据实施kNN分类算法测试分类器使用k-近邻算法改进约会网站的配对效果收集数据准备数据:使用Python解析文本文件分析数据:使用Matplotlib画二维散点图准备数据:归... 查看详情

机器学习-k-近邻算法(代码片段)

...邻算法(k-nearestneighborsalgorithm),又称为KNN算法,是这学期机器学习课教的第一个算法,也是我接触的第一个机器学习算法。学习之后的感触便是:机器学习和我想象的有点不一样KNN是真滴简单(? ̄△ ̄)?算法介绍KNN属于有监督的分... 查看详情

机器学习分类算法--k近邻算法knn(代码片段)

...应用数学知识少(近乎为零)效果好(缺点?)可以解释机器学习算法使用过程中很多细节问题更完整的刻画机器学习应用的流程 importnumpyasnpimportmatplotlib.pyplotasplt实现我们自己的kNN创建简单测试用例raw_data_X=[[3.39353 查看详情

机器学习-knn算法(鸢尾花分类实战)(代码片段)

文章目录简介代码复现sklearn库调用前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介K近邻(KNearestNeighbors,KNN)算法是最简单的分类算法... 查看详情

机器学习算法:基于horse-colic数据的knn近邻(k-nearestneighbors)预测分类(代码片段)

机器学习算法(三):基于horse-colic数据的KNN近邻(k-nearestneighbors)预测分类机器学习算法(三):基于horse-colic数据的KNN近邻(k-nearestneighbors)预测分类项目链接参考:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc1KNN的介绍和应用1.... 查看详情

机器学习实战☛k-近邻算法(k-nearestneighbor,knn)(代码片段)

机器学习实战☛k-近邻算法(K-NearestNeighbor,KNN)文章目录机器学习实战☛k-近邻算法(K-NearestNeighbor,KNN)k-近邻算法概述原理简介k-近邻算法一般流程伪代码与实现示例:使用kNN改进约会网站的配对效... 查看详情