人工智能入门 | 分类算法-KNN(原理+代码+结果)

人工智能入门 | 分类算法-KNN(原理+代码+结果)KNN 即 K 最邻近算法 是数据挖掘分类技术中比较简单的方法之一 简单来说 就是根据 最邻近 这一特征对样本进行分类

大家好,欢迎来到IT知识分享网。

人工智能入门 | 分类算法-KNN(原理+代码+结果)

前言:Hello大家好,我是小哥谈。KNN,即K最邻近算法,是数据挖掘分类技术中比较简单的方法之一,简单来说,就是根据“最邻近”这一特征对样本进行分类。🌈

     目录

🚀1.K-means和KNN区别

🚀2.KNN的算法思想

🚀3.算法步骤

🚀4.KNN算法的优缺点

🚀5.数据集

🚀6.代码实现

🚀7.结果

人工智能入门 | 分类算法-KNN(原理+代码+结果)

🚀1.K-means和KNN区别

K-means是一种比较经典的聚类算法,本质上是无监督学习,而KNN是分类(或回归)算法,是监督学习

K-means算法的训练过程需要反复迭代的操作(寻找新的质心),但是KNN不需要。K-means中的 K 代表的是簇中心,KNN的 K 代表的是选择与新测试样本距离最近的前K个训练样本数。🌳


🚀2.KNN的算法思想

KNN(k-NearestNeighbor)又被称为近邻算法,它的核心思想是:物以类聚,人以群分

假设一个未知样本数据x需要归类,总共有ABC三个类别,那么离x距离最近的有k个邻居,这k个邻居里有k1个邻居属于A类,k2个邻居属于B类,k3个邻居属于C类,如果k1>k2>k3,那么x就属于A类,也就是说x的类别完全由邻居来推断出来。🌳


🚀3.算法步骤

🍀(1)计算测试对象到训练集中每个对象的距离

🍀(2)按照距离的远近排序

🍀(3)选取与当前测试对象最近的K的训练对象,作为该测试对象的邻居。

🍀(4)统计这K个邻居的类别概率

🍀(5)K个邻居里频率最高的类别,即为测试对象的类别。


🚀4.KNN算法的优缺点

优点:非常简单的分类算法没有之一,人性化,易于理解,易于实现适合处理多分类问题,比如推荐用户

缺点:属于懒惰算法,时间复杂度较高,因为需要计算未知样本到所有已知样本的距离,样本平衡度依赖高,当出现极端情况样本不平衡时,分类绝对会出现偏差。可解释性差,无法给出类似决策树那样的规则。向量的维度越高,欧式距离的区分能力就越弱。


🚀5.数据集

名称:Prostate_Cancer

提取链接:https://pan.baidu.com/s/1xv8r54qaLpH8RiMRkcrzyA 
提取码:66hg 

数据集展示:

人工智能入门 | 分类算法-KNN(原理+代码+结果)


🚀6.代码实现

from sklearn.neighbors import KNeighborsClassifier import numpy as np import random import pandas as pd def knn(): K = 8 data=pd.read_csv(r"C:\Users\Lenovo\Desktop\course\Prostate_Cancer.csv") n = len(data) // 3 test_set = data[0:n] train_set = data[n:] train_set = np.array(train_set) test_set = np.array(test_set) A = [i for i in range(0, len(train_set))] B = [i for i in range(2, 10)] C = [i for i in range(n)] D = [1] x_train = train_set[A] x_train = x_train[:, B] y_train = train_set[A] y_train = y_train[:, D] x_test = test_set[C] x_test = x_test[:, B] y_test = test_set[C] y_test = y_test[:, D] # 训练模型 model = KNeighborsClassifier(n_neighbors=K) model.fit(x_train, y_train) score = model.score(x_test, y_test) print("准确率为:", score) if __name__=='__main__': knn() 

人工智能入门 | 分类算法-KNN(原理+代码+结果)

人工智能入门 | 分类算法-KNN(原理+代码+结果)


🚀7.结果

k=8时候,结果为0.57576

k=5时候,结果为0.18182

总结:♨️♨️♨️

KNN是一种快速高效的分类算法,其逻辑简单,易于理解。但当训练数据集很大时,需要大量的存储空间,而且需要计算训练样本和测试样本的距离,计算量较大。个人认为,这是由于KNN是一种懒惰的学习法,简单的认为“物以类聚,人以群分”,但实际上,无论是人际交往还是数据事实,可能并不完全符合这个逻辑


人工智能入门 | 分类算法-KNN(原理+代码+结果)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/144577.html

(0)
上一篇 2025-04-25 19:20
下一篇 2025-04-25 19:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信