马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
|