KNN算法

8 篇文章 0 订阅

邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.

人话就是:
KNN算法用来解决, 如何判定某个点,归属于哪个集合中的问题。
解决办法是:
这个点和谁近, 就属于谁。 所谓K,就是找最近的K个点,这K个里面,谁多就属于谁。

例子

如下图,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?
如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。
在这里插入图片描述
KNN算法很容易理解,也很容易实现。 但是正是因为这个原因,这个算法有很多的问题存在

KNN算法必须保存全部的数据集,如果训练数据集很大,那么就需要耗费大量的存储空间。
此外,由于必须对待分类数据计算与每一个训练数据的距离,非常耗时。

KNN还有个问题就是k的选择。k总是在过拟合与欠拟合之间游走。

对于K近邻模型来说,本来水平就一般,连参数也只有一个k可以调,就显得有点弱上加弱了

实现流程:

#coding=UTF-8


from sklearn.datasets import  load_iris
from sklearn.model_selection  import  train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import  KNeighborsClassifier


def knn_selector():
    '''
    用KNN对数据进行分类
    '''
    #(1) 获取数据
    iris = load_iris()
    #(2) 划分数据集
    x_train,x_test,y_train,y_test = train_test_split(iris.data , iris.target , random_state= 15)
    #(3) 特征工程:标准化
    transfer  =  StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test= transfer.transform(x_test)
    #(4) KNN算法预估器
    estimator =  KNeighborsClassifier(n_neighbors= 3)
    estimator.fit(x_train, y_train)
	#(5) 模型评估
    score = estimator.score(x_test,y_test)
    print("准确率为:\n", score)


if __name__=="__main__":
    knn_selector()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值