鱼C论坛

 找回密码
 立即注册
查看: 1683|回复: 0

KNN

[复制链接]
发表于 2019-8-6 21:19:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我们都知道,物以类聚,人以群分,所以根据某些属性,我们可以用距离对事物进行分类,KNN 算法就是根据距离进行类别的划分的。KNN原理:
      欧氏距离(欧几里得距离(这个,初中生都会滴吧~))
      距离近,就是同一个类别
K近邻法(KNN):
K近邻:
K也就是找K个邻居(计算所有点的距离(欧氏距离),从其中找到最小的k个邻居,选取其中数目最多的类别作为划分到的类别)


具体例子:(K是可变的!)
       有一个图(自己脑补吧...),如果K=3,那么离我们的划分点最近的有2个红色的点和一个蓝色的点,这3个点投票,于是我们的划分点就被分到红色
       如果K=5,那么就会有2个红色,3个蓝色,投票,我们的点就会属于蓝色
       所以我们可以看到,KNN的本质是基于一种数据统计的方法。


但是,KNN也有一定的缺点,空间复杂度和时间复杂度都比较高(因为每一次都要计算所有的点的距离)(所以我们的数据量最好不要太多)
优点:原理特别简单~


KNN的使用:
    准备数据:可以是DataFrame的数据,也可以是numpy类型的数据
    数据x必须是二维的【样本一】,【样本二】,【样本三】,.....
    目标值y没有特定的要求


使用算法进行训练:
      knn.fit(x,y)
使用算法进行预测:
      knn.predict(x_test)  直接返回结果




小例子1:
#将电影进行划分,爱情片和动作片
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
#导入算法 
from sklearn.neighbors import KNeighborsClassifier

data=pd.read_csv('C:/Users/YY/Desktop/movies.csv')
data

x=data[['武打镜头','接吻镜头']]
y=data[['分类情况']]

knn=KNeighborsClassifier(n_neighbors=5)
#进行训练
knn.fit(x,y)

#使用算法进行预测
#生成数据:碟中谍6---》动作片
#再给一个电影:理查的姑妈-->爱情片
x_test=np.array([[100,2],[2,15]])
knn.predict(x_test)

movies.zip

310 Bytes, 下载次数: 2

售价: 5 鱼币  [记录]

电影数据

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 17:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表