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

一.鸢尾花

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

knn算法python代码_Python使用KNN算法实现鸢尾花分类_第1张图片
knn算法python代码_Python使用KNN算法实现鸢尾花分类_第2张图片

知道了鸢尾花的大致外形后,进行分类就有一个比较清楚的定位了。主要以花瓣的长度和宽度以及花萼的长度和宽度作为分类标准。对不同的采集数据进行打点,使用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 !")

三.执行结果

knn算法python代码_Python使用KNN算法实现鸢尾花分类_第3张图片
knn算法python代码_Python使用KNN算法实现鸢尾花分类_第4张图片

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

你可能感兴趣的:(knn算法python代码)