Julia999 发表于 2019-8-6 21:19:29

KNN

我们都知道,物以类聚,人以群分,所以根据某些属性,我们可以用距离对事物进行分类,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([,])
knn.predict(x_test)


页: [1]
查看完整版本: KNN