KNN 算法实现|学习笔记

简介: 快速学习 KNN 算法实现

开发者学堂课程【高校精品课-华东师范大学-人工智能基础:KNN 算法-数据集拆分】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/920/detail/15582


KNN 算法实现

 

内容介绍:

一、使用散点矩阵查看数据特征关系

二、建立 KNN 模型

 

一、使用散点矩阵查看数据特征关系

数据集已经准备好了,接下来使用散点矩阵查看数据特征关系。在数据分析中,同时观察一组变量的散点图是很有意义。这也被称为散点图矩阵。scatter plot matrix。

创建这样的图表工作量巨大,我们可以使用 scatter_matrix 函数,scatter_matrix 函数能从 data frame 创建散点图矩阵。

函数格式:

scatter_matrix(frame)alpha=0.5,c,figsize=None,ax=None,diagonal='hist,marker='.',density_kwds=None,hist_kwds=None,range_padding=0.05,**kwds)

参数第一个 frame 是 pandas 的 data frame 对象,alpha 代表图像的透明度,一般取值零到一,figsize 是以英寸为单位的图像大小一般是以宽度、高度的形式来设置。

diagonal 只能在 hist 和 KDE 俩个当中选择一个。hist 表示直方图,KDE 表示核密度估计。这个参数是scatter_matrix 函数的关键参数

marker 是标记类型,例如圈点三角号的。对于刚才的数据结果,我们使用 scatter_matrix 显示训练集和测试集。

可以在上面程序的基础上添加如下语句

imPort pandas as pd

Iris_dataframe=pd.DataFrame(X_train.Columns=iris_dataset.feature_names)

#create a scatter matrix from the dataframe, color by y_train

Pd.plotting.scatter_matrix(iris_dataframe,c=y_train,figsize=(15,15),marker=0,hist_kwds=(bins:20),s=60.alph=8)

首先,imPort pandas as pd使用pddataframeX_train创建一个dataframe结构。Columns是刚才的feature_names。接下来使用 scatter matrix 创建一个散点矩阵图。

其中的 color 是 y_traintree。Figsize,marker都已经设置好了,alph是0.8,运行一下

 image.png

散点矩阵图呈对称结构,除了对角线上的密度函数图之外,其他子图分别显示了不同特征列之间的关联关系,如petal length 和 petal width 之间近似成线性关系,说明这些特征关联性很强。相反,有些特征列之间的状态比较杂乱,基本无规律可循,说明特征间的关联性不强。例如,sepal length 和s epal width 之间就比较杂乱。因此我们在训练模型时要优先选择关联明显的特征对其进行学习。

 

二、建立 KNN 模型

接下来我们就开始建立KNN模型。在Python中实现KNN方法使用的是KNeighborsClassifier类。KNeighborsClassifier 类属于 scikit-learn 的 neighbors 包。

KNeighborsClassifier 使用很简单,核心操作包括三步:

(1)创建 KNeighborsClassifier 对象,并进行初始化。

基本格式:

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,weights='uniform'algorithm='auto,leaf_size=30,p=2,metric=minkowski,metric_params=None,n_jobs=None, **kwargs)

我们来看主要参数 n_neighbors 整形可选值是五。他代表 KN 中的数量。weights 计算距离时使用的权重缺省值是uniform,表示平等权重,也可以取值 distance,表示按照距离的远近设置不同的权重。还可以自主设计加权方式。以函数形式来调用。参数 metric 是距离的计算缺省值是美式距离。当 P 等于二,m 等于美式距离时使用的是欧式距离。P 等于一,m 等于美式距离时使用的是曼哈顿距离。接下来是调用 fit 方法。

(2)调用fit方法,对数据集进行训练,

函数格式是fit(X,y),参数只有 X 和 Y。以 x 为训练集以 y 为测试集对模型进行训练。

(3)调用 predict 函数。对测试集进行预测

函数格式 Predict(x)即根据给定的数据预测其所属的类别标签

完成程序实现KNN对鸢尾花iris的数据集的分类

image.png

from sklearnl.neighbors import KNeighborsClassifier 包含进来。接下来把 train_test_split 包含进来。第一步,导入鸢尾花数据并查看数据特征。得到数据集结构150乘4,第二步,获取属性 iris.data。第三步,获取类别 iris.target。

接下来划分测试集和训练集,使用 train_test_split。测试的比例是20%,random_state 是零。接下来开始构建模型。KNN实现第一步分类器的初始化 KNN 等于 KNeighborsClassifier。所有的参数是默认。第二步,fit。对训练集进行训练。使用 iris_train_X 和 iris_train_y。即刚才拆分出来的训练集。接下来对测试集数据的标准化类型进行预测。Predict预测是刚才的测试集 test_X。

这里边暂时没有用到 test_y。接下来打印测试集的大小是30乘4。真实结果是2 1 0 2 0 2等30个。预测结果是2 1 0 2 0 2等。我们可以对比真实结果和预测结果,发现大部分是相同的,有个别不同。预测正确率 Knn.Score。Knn.Score显示预测的精确率,使用两个参数,一个是test_X一个是test_y。这里使用了测试集和测试集的标签,预测的准确率是0.96667。

image.png

从结果可以看出,拆分的测试集中。有30个样本,其中有一个判断错误,整体精确率约96.7%,精确度较高,主要原因在于数据集中的数据比较好,数据辨识度比较高,也可以将 KNN 用于图像的分类场合。通过对目标图像进行归类,能够解决类似图像识别、图像分类的问题。

相关文章
|
3月前
|
机器学习/深度学习 算法
机器学习入门(三):K近邻算法原理 | KNN算法原理
机器学习入门(三):K近邻算法原理 | KNN算法原理
|
3月前
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
|
4月前
|
算法 Python
KNN
【9月更文挑战第11天】
64 13
|
4月前
|
算法 大数据
K-最近邻(KNN)
K-最近邻(KNN)
|
4月前
|
机器学习/深度学习 算法 数据挖掘
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
|
6月前
knn增强数据训练
【7月更文挑战第27天】
47 10
|
6月前
|
机器人 计算机视觉 Python
K-最近邻(KNN)分类器
【7月更文挑战第26天】
52 8
|
6月前
创建KNN类
【7月更文挑战第22天】创建KNN类。
39 8
|
6月前
knn增强数据训练
【7月更文挑战第28天】
52 2
|
6月前
|
机器学习/深度学习 数据采集 算法
Python实现PCA降维和KNN人脸识别模型(PCA和KNeighborsClassifier算法)项目实战
Python实现PCA降维和KNN人脸识别模型(PCA和KNeighborsClassifier算法)项目实战

热门文章

最新文章