在本篇文章中,我即将以在集美大学收集到的一些数据集为基础,使用KNN算法进行一系列的操作

一、KNN算法

  首先,什么是KNN算法呢,这得用到老祖宗说的一句话“近朱者赤近墨者黑”,简单来讲就是,一个物体它靠近什么,我们也可以认为它就是什么。此算法运用广泛,生活中就有体现。比如,你是否发现,你好朋友刷到的抖音视频,你也可能提前刷到过,这就是KNN。

​  KNN也叫K近邻(K-Nearest Neighbor, KNN)是一种最经典和最简单的有监督学习方法之一。K-近邻算法是最简单的分类器,没有显式的学习过程或训练过程,是懒惰学习(Lazy Learning)。当对数据的分布只有很少或者没有任何先验知识时,K 近邻算法是一个不错的选择。

二、K自制数据集(基于集美大学)

  集美大学于1918年始建,这所大学的名字很有意思,单纯从字面上看,这是一所集美丽于一身的大学。集美大学也正如名字所说,不仅学校美,周围的环境也跟着美。因为这所大学所在的地区被当地叫做集美学村,这个集美学村是一个旅游区,其中还包含了许多学府,从小学到大学一应俱全,集美大学就在其中,这里给人的感觉很大很美,既适合出行旅游观光,又是学术氛围浓厚之地。在集美大学读书感觉犹如在旅游一般,对于学生来说是一种美好的享受。

  众所周知,航海是集美大学的特色专业,我运用Excel手动制作了一些数据,内容为航海学院和其他学院的学生数据差异。航海学院纪律严格,判断一个学生是不是航海学院的学子可以从以下角度分析:clothes color(航海学院身穿制度,颜色较为统一),hair length,height。如果是航海学院则nautical college置为1。还有数据三维散点图如下。

    

三、代码部分(主要运用了sklearn,pandas工具包)

 1.预测

    file = "sklearn/file/JMU.csv"
data = pd.read_csv(file)
lable = data.iloc[:, -1]
feature = data.iloc[:, :3]
# 2.划分数据集
x_train, x_test, y_train, y_test = train_test_split(feature, lable, test_size=0.2)
#网格搜索和交叉验证
para_dic={"n_neighbors":[i for i in range(1,20)]}
estimator=KNeighborsClassifier()
estimator=GridSearchCV(estimator,param_grid=para_dic)
estimator.fit(x_train,y_train)
# 模型评估
#1.比对真实值与预测值
# y_pre=estimator.predict(x_test)
# print("y_pre:\n",y_pre)
# print(y_pre==y_test)
#2.计算准确率
score=estimator.score(x_test,y_test)
print("准确率:\n",score) # 最佳参数
print("最佳参数:\n",estimator.best_params_)
# 最佳结果
print("最佳结果:\n",estimator.best_score_)
# 最佳估计器
print("最佳估计器:\n",estimator.best_estimator_)

准确率:
0.9166666666666666
最佳参数:
{'n_neighbors': 1}
最佳结果:
0.8936170212765957
最佳估计器:
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=1, n_neighbors=1, p=2,
weights='uniform')

Process finished with exit code 0

2.作图

    x = data.iloc[:, 0]
y = data.iloc[:, 1]
z = data.iloc[:, 2]
# 绘制散点图
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x, y, z, color='r') # 添加坐标轴(顺序是Z, Y, X)
ax.set_zlabel('height', fontdict={'size': 15, 'color': 'red'})
ax.set_ylabel('hair length', fontdict={'size': 15, 'color': 'red'})
ax.set_xlabel('clothes color', fontdict={'size': 15, 'color': 'red'})
plt.show()

3.结果分析

通过网格搜索1到20的K值结果可知,最优K取值为1。也就是说找最近的一位同学是否属于航海学院,就能大概率判断这位未知同学是否也为海院学子。

思考,为什么会是K=1呢,通过散点图可以清楚看出,海院学子特征比较集中,所以只要距离海院学子特征最近,就大概率为海院学子。

KNN算法之集美大学的更多相关文章

  1. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  2. KNN算法

    1.算法讲解 KNN算法是一个最基本.最简单的有监督算法,基本思路就是给定一个样本,先通过距离计算,得到这个样本最近的topK个样本,然后根据这topK个样本的标签,投票决定给定样本的标签: 训练过程 ...

  3. kNN算法python实现和简单数字识别

    kNN算法 算法优缺点: 优点:精度高.对异常值不敏感.无输入数据假定 缺点:时间复杂度和空间复杂度都很高 适用数据范围:数值型和标称型 算法的思路: KNN算法(全称K最近邻算法),算法的思想很简单 ...

  4. 什么是 kNN 算法?

    学习 machine learning 的最低要求是什么?  我发觉要求可以很低,甚至初中程度已经可以.  首先要学习一点 Python 编程,譬如这两本小孩子用的书:[1][2]便可.   数学方面 ...

  5. 数据挖掘之KNN算法(C#实现)

    在十大经典数据挖掘算法中,KNN算法算得上是最为简单的一种.该算法是一种惰性学习法(lazy learner),与决策树.朴素贝叶斯这些急切学习法(eager learner)有所区别.惰性学习法仅仅 ...

  6. 机器学习笔记--KNN算法2-实战部分

    本文申明:本系列的所有实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. 一案例导入:玛利亚小姐最近寂寞了, ...

  7. 机器学习笔记--KNN算法1

    前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...

  8. 学习OpenCV——KNN算法

    转自:http://blog.csdn.net/lyflower/article/details/1728642 文本分类中KNN算法,该方法的思路非常简单直观:如果一个样本在特征空间中的k个最相似( ...

  9. KNN算法与Kd树

    最近邻法和k-近邻法 下面图片中只有三种豆,有三个豆是未知的种类,如何判定他们的种类? 提供一种思路,即:未知的豆离哪种豆最近就认为未知豆和该豆是同一种类.由此,我们引出最近邻算法的定义:为了判定未知 ...

随机推荐

  1. 【ARK UI】HarmonyOS ETS如何创建PixeMap并显示Image组件上

    ​参考资料 图片处理 Context模块 api讲解 image.createPixelMap createPixelMap(number: fd, options: InitializationOp ...

  2. Windows下ESP32 环境搭建(基于esp-idf FreeRTOS)

    1. 之前的尝试(失败的尝试) 咸鱼买了3块ESP32开发板.背面写了NODEMCU v1.1,好像这玩意可以直接写lua,也可以刷Micropython写python,还可以用Arduino IDE ...

  3. 记录第一次给开源项目提 PR

    本文是深入浅出 ahooks 源码系列文章的第八篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 本篇文章算是该系列的一个彩蛋篇,记录一下第一次给开源项目提 PR ...

  4. SecureCRT 和 Xshell 连接ENSP 教程

    前言:很多人问我说想尝试使用 CRT和Xshell连接 ENSP的某台设备,以模拟现网中的工作状态,所以出了这篇随笔. ENSP版本: Xshell 连接教程 Xshell 7 评估版(其他版本没测试 ...

  5. Excel 名称管理器是什么,并实现一个级联选择框

    名称 在 Excel 中,每一个单元格都有自己的名称.表格横向是字母,纵向是数字,组合起来就是一个单元格的名称. A13 所代表的是 A 列,13 行的单元格.把一组单元格组合起来,加上一个名称,在 ...

  6. iOS白嫖系列Testflight

    1.Picsart 白嫖一年会员 使用 Picsart 照片编辑器和视频编辑器,您可以将您的创意变为现实.制作专业级拼贴画.设计和添加贴纸.快速移除和交换背景.尝试热门编辑,如黄金时段.镜子自拍和复古 ...

  7. K8S中部署apisix(非ingress)

    不使用pvc的方式在K8S中部署apisix-gateway 简介 因为公司项目准备重构,现在做技术储备,之前公司项目使用的ocelot做网关,ocelot是.net平台下的一个网关,也是很不错,但是 ...

  8. HBase概念入门

    HBase简介 HBase基于Google的BigTable论文而来,是一个分布式海量列式非关系型数据库系统,可以提供大规模数据集的实时随机读写. 下面通过一个小场景认识HBase存储.同样的一个数据 ...

  9. 使用STM32控制TMC5160驱动步进电机

    首先先来了解一下TMC5160的3种工作模式 TMC5160通过两个引脚来控制它的工作模式:SD_MODE和SPI_MODE. 1.当SD_MODE接地,SPI_MODE拉高,TMC5160即工作在模 ...

  10. 排序算法整理C++(初赛)

    排序算法整理 常见考点 将一个乱掉的字符串排回有序(以交换为基本操作)的最少操作,就是冒泡排序. 排序算法的稳定性 排序算法的时间复杂度 排序算法的稳定性 稳定性是指排序前两个元素a1 = a2,a1 ...