欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python_sklearn机器学习算法系列之k-NearestNeighbor(K最近邻分类算法)

程序员文章站 2024-03-22 13:08:34
...

       本文主要目的是通过一段及其简单的小程序来快速学习python 中sklearn的KNeighborsClassifier这一函数的基本操作和使用,注意不是用python纯粹从头到尾自己构建KNN,既然sklearn提供了现成的我们直接拿来用就可以了,当然其原理十分重要,其主要思想是,如果一个样本在特征空间中的k个最近邻的样本中的大多数都属于某一类别,则该样本也属于这个类别,k通常是不大于20的整数,关于详细的介绍可以参考:https://blog.csdn.net/itzym/article/details/70233075

       本次用到的源数据是datasets.load_iris(),iris数据集是一个字典,可以看成150行5列的二维表。150个样本,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征(前4列)iris的每个样本都包含了品种信息,即目标属性(第5列,也叫target或label),其中有5个key键,data记录每个样本四个特征数值,target记录品种数(用0,1,2表示),target_names是具体品种名称,feature_names是具体的特征名称。

KNeighborsClassifier的使用非常简单,主要分为两步:

一:使用 fit(x_train,y_train)对训练集x, y进行训练。

二:使用predict(x_test) 训练得到的估计器对输入为x_test的集合进行预测(x_test可以是测试集,也可以是需要预测的数 据)。


代码如下:

from sklearn import datasets
from sklearn.neighbors  import KNeighborsClassifier

iris=datasets.load_iris()

'''
#这里是测试iris数据集的代码
print(iris.keys())
print(iris.data)
print(iris.target)
print(iris.data.shape)
print(iris.feature_names)
print(iris.target_names)


'''
#核心代码
knn=KNeighborsClassifier(n_neighbors=6)
knn.fit(iris['data'],iris['target'])                      #用训练集进行训练模型

x=[[4.8,2.5,3.4,1.6],[6.3,3.1,3.2,1.8]]
print(x)

#核心代码
prediction=knn.predict(x)

print(prediction)

测试iris数据集的结果如下:

python_sklearn机器学习算法系列之k-NearestNeighbor(K最近邻分类算法)

python_sklearn机器学习算法系列之k-NearestNeighbor(K最近邻分类算法)

预测结果:

python_sklearn机器学习算法系列之k-NearestNeighbor(K最近邻分类算法)

更多算法可以参看博主其他文章,或者github:https://github.com/Mryangkaitong/python-Machine-learning