knn算法python代码_Python使用KNN算法实现鸢尾花分类

一.鸢尾花

鸢尾属(拉丁学名:Iris L.),鸢尾科多年生草本植物,有块茎或匍匐状根茎;叶剑形,嵌叠状;花美丽,状花序或圆锥花序;花被花瓣状,有一长或短的管,外弯,花柱分枝扩大,花瓣状而有颜色,外展而覆盖着雄蕊;子房下位,胚珠多数,果为蒴果。

f3f5a6d9d71a9bfc140afb41ef0432e8.png
b5200a09998e7b83cd723c328bc53f82.png

知道了鸢尾花的大致外形后,进行分类就有一个比较清楚的定位了。主要以花瓣的长度和宽度以及花萼的长度和宽度作为分类标准。对不同的采集数据进行打点,使用KNN也就是聚类的方式进行类别区分。

二.代码实现

#coding:utf-8from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.neighbors import KNeighborsClassifierimport numpy as npimport matplotlib.pyplot as pltiris_dataset = load_iris()  # 获取数据# 对数据进行拆分,分为训练数据和测试数据x_train, x_test, y_train, y_test = train_test_split(iris_dataset["data"], iris_dataset["target"], random_state=0)knn = KNeighborsClassifier(n_neighbors=1)  # 获取KNN对象knn.fit(x_train, y_train)  # 训练模型# 评估模型y_pre = knn.predict(x_test)score = knn.score(x_test, y_test)  # 调用打分函数print("test set predictions:{}".format(y_test))print("test set score:{:.2f}".format(score))if score > 0.9:    x_new = np.array([[5, 2.9, 1, 0.3]]) # 用于预测的原始数据    print("x_new.shape:{}".format(x_new.shape))    prediction = knn.predict(x_new)  # 预测    print("prediction:{}".format(prediction))    print("predicted target name:{}".format(iris_dataset["target_names"][prediction]))    # 可视化展示    plt.title("KNN Classification")    plt.plot(x_train, y_train, "b.")  # 训练数据打点    plt.plot(x_test, y_test, "y.")  # 测试数据打点    plt.plot(x_new, prediction, "ro")  # 预测数据打点    plt.show()else:    print("used train or test data is not available !")

三.执行结果

e81649618dec0e77cf11d9c8e17e2a3c.png
1ba38ec3d98f236219ecd0f4e2ed2353.png

根据打点的情况看,预测数据和测试及训练数据相吻合,模型预测较为准确!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值