邻近算法,或者说K最邻近(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻近值来代表。近邻算法就是将数据集合中每一个记录进行分类的方法。
- 使用sklearn框架的load_iris()函数获得鸢尾花的数据集
- 再通过sklearn框架model_selection模块导入分割函数train_test_split()得到训练的数据集,测试的数据集,训练的标签集,测试的标签集
- 再使用KNN分类器对象进行机器假学习训练,带入测试数据集进行预测,得到的结果与训练的标签集进行比较。
load_iris()函数: 数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性(分别是:花萼长度,花萼宽度,花瓣长度,花瓣宽度)。可通过这4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类的鸢尾花中的哪一类。
Iris里有两个属性iris.data,iris.target。data是一个矩阵,每一列代表了萼片或花瓣的长宽,一共4列,每一列代表某个被测量的鸢尾植物,一共有150条记录。
代码如下:
# 从sklearn框架的datasets数据集导入loadt_iris函数
from sklearn.datasets import load_iris
# sklearn框架model_selection模块导入分割函数train_test_split()
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
def load_data():
# load_iris():获得鸢尾花数据集150条
data = load_iris()
return data['data'], data['target']
if __name__ == "__main__":
# 1.准备训练的数据集和标签集
x, y = load_data()
# print(x)
# 2.准备测试的数据集:将数据集和标签集,按照某种比例分割
# test_size:分割后测试数据占总数据的比例
# 该函数返回 训练的数据集,测试的数据集,训练的标签集,测试的标签集
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.1/3)
#test_size=0.1/3:取五条数据作为测试的数据集
# 3.构造knn分类器对象,指定k超参数
# print("x_tr",x_train,"x_test",x_test)
classifier=KNeighborsClassifier(n_neighbors=5)
# 4.机器假学习训练
classifier.fit(x_train, y_train)
# 5.带入测试数据集进行预测
pre = classifier.predict(x_test)
print("预测:",pre)
print("真实数据",y_test)
打印出:预测: [1 1 1 2 0]
真实数据 [1 1 1 2 0]