首页 > 编程语言 >KNN算法之集美大学

KNN算法之集美大学

时间:2022-10-31 10:22:53浏览次数:42  
标签:KNN print 大学 算法 estimator test 集美

 在本篇文章中,我即将以在集美大学收集到的一些数据集为基础,使用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,print,大学,算法,estimator,test,集美
From: https://www.cnblogs.com/danchegg/p/16843383.html

相关文章

  • 图的匹配算法及其相关
    图的匹配算法及其相关本文大量参考了:国家集训队2015论文集,陈胤伯,浅谈图的匹配算法及其应用国家集训队2017论文集,杨家齐,基于线性代数的一般图匹配Fuyuki的博客,题解P6......
  • Berlekamp-Massey 算法(求数列的最短递推式)
    用于求数列的最短递推式。本文参考自https://www.cnblogs.com/jz-597/p/14983564.html。增量法,设\(R_i\)表示第\(i\)个历史递推式,当前为\(R_{cnt}\)。设\(\Delta......
  • 数据结构与算法-树
    树的表示与术语节点的度、树的度、叶子节点、父亲节点、兄弟节点、堂兄节点、祖先节点、子孙节点、节点层次、树的深度、路径、路径长度、分支...二叉树二叉树的性质......
  • 实验一 :决策树算法实验
    实验一:决策树算法实验【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算......
  • 实验一:决策树算法实验
    实验一:决策树算法实验【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算......
  • 实验一:决策树算法实验
    【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算法;针对特定应用场景及......
  • 算法为什么难学,来了解一下
    (如何学习算法的)算法为什么难学很多人感叹算法怎么这么难学?一个原因就是算法本身就有一定的复杂性另一个原因可能就是讲的不到位,没有很好的理解。算法面临的困难是什......
  • C++求高精度pi(2)高斯-勒让德算法
    C++分析参考目前求π的算法中哪种收敛最快?-知乎(zhihu.com)中@byoshovel答主的回答,有这些比较容易想到的方法对于我们的任务来说,拉马努金公式和加强鬼畜公式和BBP......
  • 感知机学习算法的原始形式 | 机器学习随笔
    根据《统计学习方法第二版》中2.3.1部分,使用python编写了感知机学习算法的原始形式,具体代码如下:importnumpyasnpdefperceptron_raw():data=np.array(......
  • 【数据结构-数组】数组的相关算法
    目录1无序数组的排序——快速排序1.1升序排序1.2降序排序2有序数组的查找——折半查找(二分查找)2.1升序数组的查找2.2降序数组的查找3有序数组的合并——归并思想3.1......