Knn算法实现分类(二)

举报
咔吧咔吧 发表于 2020/10/25 19:44:30 2020/10/25
【摘要】 利用jupyter分析 ● 绘制基本图像import numpy as npimport matplotlib.pyplot as plt#定义特征值raw_data_x=[[3.3144558 , 2.33542461], [3.75497175, 1.93856648], [1.38327539, 3.38724496], [3.0920...

    利用jupyter分析

    ● 绘制基本图像

import numpy as np
import matplotlib.pyplot as plt

#定义特征值
raw_data_x=[[3.3144558 , 2.33542461],
       [3.75497175, 1.93856648],
       [1.38327539, 3.38724496],
       [3.09203999, 4.47090056],
       [2.58593831, 2.13055653],
       [7.41206251, 4.80305318],
       [5.912852  , 3.72918089],
       [9.21547627, 2.8132231 ],
       [7.36039738, 3.35043406],
       [7.13698009, 0.40130301]]

#定义目标值
raw_data_y=[0,0,0,0,0,1,1,1,1,1]

X_train = np.array(raw_data_x)
y_train = np.array(raw_data_y)

#利用matplotlib绘制图像
plt.scatter(X_train[y_train==0,0],X_train[y_train==0,1],color='g')
plt.scatter(X_train[y_train==1,0],X_train[y_train==1,1],color='r')
plt.show()

    

    ● 加入预测点,绘制图像

x=np.array([8.093607318,3.365731514])

plt.scatter(X_train[y_train==0,0],X_train[y_train==0,1],color='g')
plt.scatter(X_train[y_train==1,0],X_train[y_train==1,1],color='r')
plt.scatter(x[0],x[1],color='b')
plt.show()

    

    ● 欧拉距离公式

    平面中两点之间的欧拉距离:

    

    立体中两点之间的距离:

    

    任意维度下的欧拉距离:

    

    简化后:

    


    欧拉距离:任意空间下两个点的对应维度的坐标值相减的平方和再开方


    ● 实现距离计算

from math import sqrt
distances = [sqrt(np.sum((x_train-x)**2)) for x_train in X_train]
#distances=np.sqrt(np.sum(np.square(X_train-x),axis=1))

#对计算的距离进行排序
nearest = np.argsort(distances)

    ● 定义K值,得出计算结果

k=6

#获取距离最近的前k个数据
topK_y = [y_train[i] for i in nearest[:k]]

#统计每个y值出现的次数
from collections import Counter
votes = Counter(topK_y)

#获取出现次数最多的那个y的取值
predict_y = votes.most_common(1)[0][0]


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200