今日分享:鸢尾花分类 KNN模型评价web
一:实例流程算法
一、获取数据:是否须要利用pandas读取数据微信
二、数据处理:选定特征值及目标值,若存在缺失值,则需进行处理机器学习
三、进行特征工程:若特征值为数值型数据,考虑是否进行标准化处理;若特征值中存在类别型的文本数据,需进行one-hot编码处理,实现途径,使用pandas转换成字典,进行特征抽取 ;若数据维度较高,考虑是否须要降维处理。学习
四、实例化估计器,训练,预测测试
二:数据集介绍编码
本次示例的数据集为sklearn中自带的数据集(机器学习中数据相关介绍 sklearn数据集介绍),数据文件已默认下载到本地中,使用时直接导入便可。顺便经过iris数据集来代码演示一下自带数据集的相关操做spa
三:代码演示.net
#导入相关库
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
def knn_iris():
'''K-近邻模型对鸢尾花进行分类'''
#加载数据集
iris = load_iris()
#划分数据集
#切记 x_train,x_test,y_train,y_test 顺序位置必定不能写错
#括号中参数分别为 (特征值 目标值 测试集大小占比) 占比可自行设定 经常使用0.25
x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.25)
'''特征工程(标准化)'''
std = StandardScaler()
#对测试集和训练集的特征值进行标准化
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)
#Knn模型实例化
knn = KNeighborsClassifier()
#训练数据
knn.fit(x_train,y_train)
print('得出预测结果')
y_predict = knn.predict(x_test)
print(y_predict)
print('得出预测准确率')
print(knn.score(x_test,y_test))
if __name__ == '__main__':
knn_iris()
输出结果3d
得出预测结果
[0 1 1 0 0 2 1 0 0 0 1 2 1 0 2 2 0 1 2 2 1 1 1 0 1 0 2 1 0 0 1 1 2 2 1 1 1
0]
得出预测准确率
0.9736842105263158
因为该数据集是专门方便学习者用来学习练习分类算法的,所以其预测的准确率仍是很高的
二:KNN模型评价
KNN模型时比较简单易上手的一种分类模型,可是该模型也存在一些问题,好比说:
k值取多大为好呢?大小又有什么影响?k值取很小:容易受异常点影响;k值取很大:容易受最近数据太多致使比例变化
优缺点
优势:简单,易于理解,易于实现,无需估计参数,无需训练
缺点:懒惰算法,对测试样本分类时的计算量大,内存开销大必须指定K值,K值选择不当则分类精度不能保证
公众号 QQ群
扫QQ群二维码进交流学习群
或在后台回复:加群
本文分享自微信公众号 - 数据指南(BigDataDT)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。