深度学习L4 KNN算法模型

深度学习 L4 k-邻近算法模型

基本概念

假设有一堆数据,每个数据点都有某些特征(比如颜色、大小、重量等),并且每个数据点被分成了不同的类别(如圆形、正方形、三角形)
现在有一个新的输入数据,不知道它属于哪个类别,需要通过k-邻近算法给它分类
KNN的原理:根据新数据点附近的k个相邻点是什么类别,通过这些邻近点的类别,确定新数据点的类别

具体步骤

  1. 计算距离:KNN首先计算新数据点和已知数据点之间每个点的”距离“,一般使用欧几里得距离(如测量两点之间的直线距离)
  2. 找到K个最近的点:选出和新数据点距离最近的K个数据点,这些点就是新数据的邻近点
  3. 投票决定类别:根据这K个邻近点中最多种类的数据点,决定新数据点的种类

举例:假设有一张列有不同水果(如香蕉、苹果、梨子)特征信息(如颜色、大小、气味)的表格。现在有一个新的水果,不知道属于什么类别,需要根据这张表格判定。
KNN就会根据这张表格中的特征信息,找到和这个水果颜色、大小、气味最相近的K个水果。如果K个中最多的是香蕉,就会判定这个水果是香蕉

注意事项

K值的选择:K需要手动设定,即我们需要考虑多少个邻居。K值太小,预测受单个点影响太大;K值太大,会计入太多不相关的邻居,影响结果。

代码实现

通过sklearn包来实现KNN

环境配置
语言环境:Python3.9
编译器:Jupyter Lab

1.问题简介:

帮助海伦用KNN模型通过以下参数对约会网站的潜在对象进行分类:

  1. 每年获得的飞行常客里程数
  2. 玩视频游戏所耗时间百分比
  3. 每周消费的冰淇淋公升数

分类类别

  1. 不喜欢的人
  2. 魅力一般的人
  3. 极具魅力的人

2.导入数据

数据标签详解
0:每年获得的飞行常客里程数
1:玩视频游戏所耗时间百分比
2:每周消费的冰淇淋公升数
3:人物类别(不喜欢的人、魅力一般的人、极具魅力的人)
导入数据集

import pandas as pd

data=pd.read_table('C:/Users/65106/OneDrive/Desktop/ML camp/L4/datingTestSet2.txt',
                  sep='\t',
                  header=None)

data.head()

数据集

选取参数变量和目标变量

X = data.iloc[:,:3]
Y = data.iloc[:,3]

调用sklearn model分割训练集和测试集

from sklearn.model_selection import train_test_split
#测试集占总数据集的25%
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, 
                                                    test_size=0.25, 
                                                    random_state=3)

从sklearn中调用KNN邻近算法模型

from sklearn.neighbors import KNeighborsClassifier

knc = KNeighborsClassifier()
knc.fit(X_train, Y_train)

输出预测的结果

data["预测结果"] = knc.predict (data.iloc[:,:3])
data.head(10)

预测结果
对算法进行评价

scoreK = knc.score(X_test,Y_test)

print(scoreK)

得分:0.796

总结

优点

简单易懂,适合初学者

缺点

不适用于数据量大的情况,计算每个点的距离会非常耗时;同事,对不相关的特征敏感,需要对数据进行预处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值