k-近邻算法之sklearn实战

Python版本:python3.x


sklearn简介

Scikit learn 也简称sklearn,是机器学习领域当中最知名的python模块之一。使用sklearn可以很方便地让我们实现一个机器学习算法。一个复杂度算法的实现,使用sklearn可能只需要调用几行API即可。所以学习sklearn,可以有效减少我们特定任务的实现周期。

实例:鸢尾属植物

1 数据集介绍:

虹膜
在这里插入图片描述
数据量:150个
四个特征
萼片长度,萼片宽度,花瓣长度,花瓣宽度
(sepal length, sepal width, petal length, petal width)
三种分类
山鸢尾, 杂色鸢尾,维吉尼亚鸢尾
(iris setosa, iris versicolour, iris virginica)

数据展示:
在这里插入图片描述

代码展示

由于该数据集在sklearn库中就有,所以我们直接调用即可,不需要对数据进行处理。

#导入kNN算法分类器和数据集
from sklearn.neighbors import KNeighborsClassifier as KNN
from sklearn import datasets

#读取虹膜数据集
iris = datasets.load_iris()
#打印数据
print(iris)

#n_neighbors=3就是k=3,algorithm='auto'表示算法自己决定合适的搜索算法
neigh = KNN(n_neighbors=3,algorithm='auto')
#建立模型
neigh.fit(iris.data,iris.target)
#预测新数据为什么种类的虹膜
predictedLabel = neigh.predict([[0.1,0.2,0.3,0.4]])
#打印预测值
print(predictedLabel)

KNneighborsClassifier参数说明:

官方文档
在这里插入图片描述

  • n_neighbors:默认为5,就是k-NN的k的值,选取最近的k个点。
  • weights:默认是uniform,参数可以是uniform、distance,也可以是用户自己定义的函数。uniform是均等的权重,就说所有的邻近点的权重都是相等的。distance是不均等的权重,距离近的点比距离远的点的影响大。用户自定义的函数,接收距离的数组,返回一组维数相同的权重。
  • algorithm:快速k近邻搜索算法,默认参数为auto,可以理解为算法自己决定合适的搜索算法。除此之外,用户也可以自己指定搜索算法ball_tree、kd_tree、brute方法进行搜索,brute是蛮力搜索,也就是线性扫描,当训练集很大时,计算非常耗时。kd_tree,构造kd树存储数据以便对其进行快速检索的树形数据结构,kd树也就是数据结构中的二叉树。以中值切分构造的树,每个结点是一个超矩形,在维数小于20时效率高。ball tree是为了克服kd树高纬失效而发明的,其构造过程是以质心C和半径r分割样本空间,每个节点是一个超球体。
  • leaf_size:默认是30,这个是构造的kd树和ball树的大小。这个值的设置会影响树构建的速度和搜索速度,同样也影响着存储树所需的内存大小。需要根据问题的性质选择最优的大小。
  • metric:用于距离度量,默认度量是minkowski,也就是p=2的欧氏距离(欧几里德度量)。
  • p:距离度量公式。在上小结,我们使用欧氏距离公式进行距离度量。除此之外,还有其他的度量方法,例如曼哈顿距离。这个参数默认为2,也就是默认使用欧式距离公式进行距离度量。也可以设置为1,使用曼哈顿距离公式进行距离度量。
  • metric_params:距离公式的其他关键参数,这个可以不管,使用默认的None即可。
  • n_jobs:并行处理设置。默认为1,临近点搜索并行工作数。如果为-1,那么CPU的所有cores都用于并行工作。

KNeighborsClassifier提供了以一些方法供我们使用:


大概意思为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值