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