龙空技术网

机器学习实战:K近邻(分类)算法在鸢尾花卉数据上的分类表现

AI上金融 264

前言:

当前咱们对“平均最近邻分析教程”都比较着重,同学们都需要学习一些“平均最近邻分析教程”的相关内容。那么小编同时在网络上汇集了一些关于“平均最近邻分析教程””的相关资讯,希望你们能喜欢,各位老铁们快快来学习一下吧!

K近邻算法非常直观其很容易理解,具体的算法在 机器学习算法原理及实现——KNN算法中已经介绍过,有感兴趣的同学可以去看看。本文将介绍如何用k近邻分类算法对鸢尾花卉种类进行区分。

K近邻分类使用数据简介

本次使用的数据为鸢尾花卉数据,当下作为教材般的数据保存在sklearn的datasets中,获取数据的代码如下:

from sklearn.datasets import load_irisiris_data = load_iris()print("本次下载的iris数据有:%d 行,%d 列" % (iris_data.data.shape[0],iris_data.data.shape[1]))print(iris_data.DESCR)

对于数据挖掘者来说,查看数据说明是一个很好的习惯,本次下载的iris数据有:150 行,4 列,通过描述可以看出150个样本分布在3个不同的种类上,每个样本都有4个数据,分别是花瓣长度、花瓣的宽度、花萼的长度 和花萼的宽度。

K近邻分类建模评估

按照通用的分割和随机取数原则,将数据按1:3进行分割,75%用于训练。25%用于测试。

# 获取特征数据和标签x = iris_data.datay = iris_data.target#数据分割from sklearn.cross_validation import train_test_splitx_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.25,random_state=33)

通过sklearn.preprocessing 中StandardScaler方法对特征数据和标签进行归一标准化。

#数据标准化from sklearn.preprocessing import StandardScaler#标准化数据ss = StandardScaler()x_train=ss.fit_transform(x_train)x_test=ss.transform(x_test)

使用K近邻分类器对规整的数据进行建模分析。

from sklearn.neighbors import KNeighborsClassifiermodel = KNeighborsClassifier() #初始化模型model.fit(x_train,y_train) #调用fit函数进行模型训练y_predict = model.predict(x_test) #使用predict 函数进行预测

同 机器学习实战:朴素贝叶斯算法在新闻文本数据上的分类表现一样,采用分类的4个经典指标对鸢尾花卉种类预测进行性能评估。

from sklearn.metrics import classification_reportprint("模型得分:%.2f" % (float(model.score(x_test,y_test))*100))模型得分:94.74print(classification_report(y_test,y_predict,target_names= iris_data.target_names))

通过38条测试数据的性能评估可以看出,K近邻分类模型的分类准确率为94.74分,平均精确率、召回率和F1指标均在0.95以上,模型较好。

K近邻分类模型总结

由于K近邻分类器算法非常直观,因此广受初学者喜爱。但K近邻算法与其他模型区别在于训练过程中没有使用参数,而是根据测试样本在训练样本中的分布直接进行分类。所以K近邻是无参模型中的一种。正是由于这样的分类决策算法,到时计算复杂度非常高,对资源消耗非常大,因此规模较大数据,慎用该模型。

好了,今天就到这里,如有疑问,欢迎大家关注留言。

标签: #平均最近邻分析教程