某样本在 特征空间中如果有一个与 其最相似的样本属于某个 类别,那么这个样本也是属于这个类别
比如距离:
p = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 p = \sqrt {(x_1 – x_2)^2 + (y_1 – y_2)^2}p =(x 1 −x 2 )2 +(y 1 −y 2 )2
当然我们数据之间可以没有距离这种差别, 比如电影的类别,员工的分类都是可以使用该公式的
案例分析
太糟糕了 ! 斯卡蒂突然找到博士,说自己是忘记了自己一起在深海猎人时候的伙伴 ! 幸好我们有数据来帮忙,快帮忙找找吧!
名字 对猫的好感 对狗的好感 喜欢运动的程度
0 斯卡蒂 70 92 100
1 幽灵鲨 80 79 80
2 凯尔希 100 82 0
3 阿米娅 100 100 100
代码:
import pandas as pd
finder = 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 KNeighborsClassifier
finder = 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 斯卡蒂和捣蛋鬼最近 那他就是辅助吧!
是吗? 不是!
我们可以看见如果吧捣蛋鬼拿开我们可以看见两个近卫角色都紧挨着斯卡蒂很明显斯卡蒂是个近卫嘛!
Sklearn 的使用
白咕咕说博士真是个笨蛋(实际上也是的), 明明可以使用 sklearn 非要那么麻烦
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
finder = 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)
model.fit(X_TZ, X_GROUP)
ret = model.predict(df.iloc[:1, 1:4])
print(ret)
这样的数据确实舒服了
我们做个总结
-
我是斯卡蒂的狗!
-
什么是K值邻近算法(一个分类算法)
- K值近邻算法的原理(欧式距离公式)
- sklearn实现K值近邻算法
- 取多个样本的好处:避免异常的问题出现导致(数值相似但是不是同一类型样本的出现)我们的模型Bug
Original: https://blog.csdn.net/tc9527_/article/details/127877085
Author: 广安带专人
Title: 【明日方舟 人工智能】在罗德岛学习人工智能的日子 (一)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/721094/
转载文章受原作者版权保护。转载请注明原作者出处!