【明日方舟 人工智能】在罗德岛学习人工智能的日子 (一)
创始人
2024-01-22 09:13:06

K 值 近邻算法

某样本在特征空间中如果有一个与其最相似的样本属于某个类别,那么这个样本也是属于这个类别

比如距离:
p=(x1−x2)2+(y1−y2)2p = \sqrt {(x_1 - x_2)^2 + (y_1 - y_2)^2} p=(x1​−x2​)2+(y1​−y2​)2
当然我们数据之间可以没有距离这种差别, 比如电影的类别,员工的分类都是可以使用该公式的

案例分析

太糟糕了 ! 斯卡蒂突然找到博士,说自己是忘记了自己一起在深海猎人时候的伙伴 ! 幸好我们有数据来帮忙,快帮忙找找吧!

    名字  对猫的好感  对狗的好感  喜欢运动的程度
0  斯卡蒂     70     92      100
1  幽灵鲨     80     79       80
2  凯尔希    100     82        0
3  阿米娅    100    100      100

代码:

import pandas as pdfinder = 0  # 斯卡蒂在数据的第0行
df = pd.read_excel('./我要贴贴.xlsx')  # 读取文件df['评分'] = (((df['对猫的好感'][0] - df['对猫的好感']) ** 2 +(df['对狗的好感'][0] - df['对狗的好感']) ** 2 +(df['喜欢运动的程度'][0] - df['喜欢运动的程度']) ** 2) ** .5
)  # 对斯卡蒂的距离做评分print(df)

这是结果

    名字  对猫的好感  对狗的好感  喜欢运动的程度          评分
0  斯卡蒂     70     92      100    0.000000
1  幽灵鲨     80     79       80   25.865034
2  凯尔希    100     82        0  104.880885
3  阿米娅    100    100      100   31.048349

除了自己 斯卡蒂大概的伙伴就是离他最相似的幽灵鲨吧~ 事实上确实如此

(话说斯卡蒂甚至92点喜欢我~)

案例二

又是健忘的斯卡蒂找到博士,说忘记自己是干什么的了,这可真是下头,但是我们还是可以进行操作

名字法伤物伤防御类型
斯卡蒂0400100
幽灵鲨035080近卫
凯尔希02000医疗
阿米娅40000法师
星熊0430800
德克萨斯30300200先锋
拉普兰德038090近卫
闪灵03200医疗
霞光0130400
捣蛋鬼039090辅助

还是这么操作:

"""
需求:"""
import pandas as pd
from sklearn.neighbors import KNeighborsClassifierfinder = 0  # 斯卡蒂在数据的第0行
df = pd.read_excel('./干员表.xlsx')  # 读取文件df['评分'] = (((df['法伤'][0] - df['法伤']) ** 2 +(df['物伤'][0] - df['物伤']) ** 2 +(df['防御'][0] - df['防御']) ** 2) ** .5
)  # 对斯卡蒂的距离做评分print(df)
     名字   法伤   物伤   防御   类型          评分
0   斯卡蒂    0  400  100  NaN    0.000000
1   幽灵鲨    0  350   80   近卫   53.851648
2   凯尔希    0  200    0   医疗  223.606798
3   阿米娅  400    0    0   法师  574.456265
4    星熊    0  430  800    盾  700.642562
5  德克萨斯   30  300  200   先锋  144.568323
6  拉普兰德    0  380   90   近卫   22.360680
7    闪灵    0  320    0   医疗  128.062485
8    霞光    0  130  400    盾  403.608721
9   捣蛋鬼    0  390   90   辅助   14.142136

emm 斯卡蒂和捣蛋鬼最近 那他就是辅助吧!

是吗? 不是!

我们可以看见如果吧捣蛋鬼拿开我们可以看见两个近卫角色都紧挨着斯卡蒂很明显斯卡蒂是个近卫嘛!

所以我们不能单独看一个挨着样本的相似样本而是找一个组,通过组内,这个组有X人不等(X最好是奇数方便我们投票选择) 这个X就是我们的K值 所以才叫K值近邻算法嘛。

Sklearn 的使用

白咕咕说博士真是个笨蛋(实际上也是的), 明明可以使用 sklearn 非要那么麻烦

import pandas as pd
from sklearn.neighbors import KNeighborsClassifier  # sklearn.neighbors是相邻算法之一finder = 0  # 斯卡蒂在数据的第0行
df: pd.DataFrame = pd.read_excel('./干员表.xlsx')  # 读取文件X_TZ, X_GROUP = df.iloc[1:, 1:4], df.iloc[1:, 4]
"""
X_TZ 放置着数据的特征值 如法伤物伤防御 记住不要把斯卡蒂的数据放进去了 他是需要进行预测而不是训练的的!X_GROUP 这些特征值可以得到的结果是什么 他的数据个数需要和X_TZ相似 但是形状可以不同
"""model = KNeighborsClassifier(n_neighbors=3)  # n_neighbors就是我们所说的 K值
model.fit(X_TZ, X_GROUP)  # 把数据交给模型吧ret = model.predict(df.iloc[:1, 1:4])  # 把斯卡蒂带进去看看?
print(ret)
# ['近卫']

这样的数据确实舒服了

总结

我们做个总结

  • 我是斯卡蒂的狗!
  • 什么是K值邻近算法(一个分类算法)
  • K值近邻算法的原理(欧式距离公式)
  • sklearn实现K值近邻算法
  • 取多个样本的好处:避免异常的问题出现导致(数值相似但是不是同一类型样本的出现)我们的模型Bug

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
ps局部放大 放大某个部位的图... 软件类学习建议:边看边练习,可以先收藏后学习。一、使用Ctrl快捷键放大:Ctrl + +缩小:Ct...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
ps局部放大 放大某个部位的图... 软件类学习建议:边看边练习,可以先收藏后学习。一、使用Ctrl快捷键放大:Ctrl + +缩小:Ct...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...