机器学习-KNN算法

简介:

顾名思义,KNN(K Near Neighbor):k个最近的邻居,即每个样本都可以用它最接近的k个邻居来代表。

具体步骤:

1.根据数据来确定合适的K。

2.选取距离目标最近的K个数据。

3.根据K个数据的类型预测目标。

具体示例: 

使用k-nn算法分类一个电影是爱情片还是动作片。

电影名称亲吻镜头打斗镜头电影类型
1043爱情片
1002爱情片
811爱情片
10101动作片
599动作片
298动作片
9018

1.随机取K为 3

2.计算电影七到其他电影的距离

电影名称到电影七的距离
20.5

18.7

19.2
115.3
117.4
118.9

3.根据距离排序:18.7>19.2>20.5>115.3。显然电影七属于爱情片。

代码:

import matplotlib.pyplot as plt
import numpy as np
from math import sqrt

arr = np.array([[3, 104], [2, 100], [1, 81], [101, 10], [99, 5], [98, 2]])

x = arr[:, 0]
y = arr[:, 1]

plt.scatter(x[:3], y[:3], color='blue')
plt.scatter(x[3:], y[3:], color='orange')
plt.scatter(90, 18, color='red')
plt.xlim(0, 110)
plt.ylim(0, 120)
plt.xlabel('Action')
plt.ylabel('Kiss')
plt.show()


def fun(x1, y1):
    d = sqrt((x1 - 18) ** 2 + (y1 - 90) ** 2)
    return d


a = []
b = []
m = n = 0
for i in range(6):
    a.append(fun(arr[i, 0], arr[i, 1]))
    b.append(fun(arr[i, 0], arr[i, 1]))  # 用来装原始数据

for j in range(6):
    for i in range(6 - 1 - j):
        if a[i] > a[i + 1]:
            a[i], a[i + 1] = a[i + 1], a[i]

for i in range(3):
    for j in range(3):
        if a[j] == b[i]:
            m = m + 1
        if a[j] == b[i + 3]:
            n = n + 1

if m > n:
    print("电影七是爱情片")
else:
    print("电影七是动作片")

​​​​​​​​​​​​​​

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值