鸢尾花种类预测
鸢( yuān )尾花种类预测
使用K-Nearest Neighbor(KNN)算法对鸢尾花的种类进行分类,并测量花的特征。
鸢尾花种类
Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。关于数据集的具体介绍:
scikit-learn数据集介绍
scikit-learn数据集API sklearn.datasets加载获取流行数据集 datasets.load_*()获取小规模数据集,数据包含在datasets里datasets.fetch_*(data_home=None)获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/ sklearn小数据集
sklearn.datasets.load_iris()加载并返回鸢尾花数据集
名称数量类别3特征4样本数量150每个类别数量50 sklearn大数据集 sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’) subset:'train'或者'test','all',可选,选择要加载的数据集。训练集的“训练”,测试集的“测试”,两者的“全部”sklearn数据集返回值介绍
load和fetch返回的数据类型datasets.base.Bunch(字典格式) data:特征数据数组,是 [n_samples * n_features]的二维numpy.ndarray数组target:标签数组,是 n_samples 的一维 numpy.ndarray 数组DESCR:数据描述feature_names:特征名,新闻数据,手写数字、回归数据集没有target_names:标签名from sklearn.datasets import load_iris # 获取鸢尾花数据集 iris = load_iris() print("鸢尾花数据集的返回值:n", iris) # 返回值是一个继承自字典的Bench print("鸢尾花的特征值:n", iris["data"]) print("鸢尾花的目标值:n", iris.target) print("鸢尾花特征的名字:n", iris.feature_names) print("鸢尾花目标值的名字:n", iris.target_names) print("鸢尾花的描述:n", iris.DESCR) 12345678910
查看数据分布
通过创建一些图,以查看不同类别是如何通过特征来区分的。 在理想情况下,标签类将由一个或多个特征对完美分隔。 在现实世界中,这种理想情况很少会发生。
seaborn介绍Seaborn 是基于 Matplotlib 核心库进行了更高级的 API 封装,可以让你轻松地画出更漂亮的图形。而 Seaborn 的漂亮主要体现在配色更加舒服、以及图形元素的样式更加细腻。
安装 pip3 install seaborn
seaborn.lmplot()是一个非常有用的方法,它会在绘制二维散点图时,自动完成回归拟合
sns.lmplot()里的 x, y 分别代表横纵坐标的列名data=是关联到数据集hue=*代表按照 species即花的类别分类显示fit_reg=是否进行线性拟合%matplotlib inline # 内嵌绘图 import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # 把数据转换成dataframe的格式 iris_d = pd.DataFrame(iris['data'], columns = ['Sepal_Length', 'Sepal_Width', 'Petal_Length', 'Petal_Width']) iris_d['Species'] = iris.target def plot_iris(iris, col1, col2): sns.lmplot(x = col1, y = col2, data = iris, hue = "Species", fit_reg = False) plt.xlabel(col1) plt.ylabel(col2) plt.title('鸢尾花种类分布图') plt.show() plot_iris(iris_d, 'Petal_Width', 'Sepal_Length')
1234567891011121314151617数据集的划分
机器学习一般的数据集会划分为两个部分:
训练数据:用于训练,构建模型测试数据:在模型检验时使用,用于评估模型是否有效划分比例:
训练集:70% 80% 75%测试集:30% 20% 25% 数据集划分api sklearn.model_selection.train_test_split(arrays, *options) 参数:x 数据集的特征值
y 数据集的标签值
test_size 测试集的大小,一般为float
random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。return
x_train, x_test, y_train, y_test
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 1、获取鸢尾花数据集 iris = load_iris() # 对鸢尾花数据集进行分割 # 训练集的特征值x_train 测试集的特征值x_test 训练集的目标值y_train 测试集的目标值y_test x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22) print("x_train:n", x_train.shape) # 随机数种子 x_train1, x_test1, y_train1, y_test1 = train_test_split(iris.data, iris.target, random_state=6) x_train2, x_test2, y_train2, y_test2 = train_test_split(iris.data, iris.target, random_state=6) print("如果随机数种子不一致:n", x_train == x_train1) print("如果随机数种子一致:n", x_train1 == x_train2) 12345678910111213
机器学习流程
获取数据集数据基本处理特征工程机器学习模型评估
鸢尾花预测分析
导入所需模块
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsbClassifier 1234
机器学习流程
获取数据集数据基本处理特征工程机器学习模型评估获取数据
iris = load_iris() iris print("数据集为:n", iris.data.shape) print("目标集为:n", iris.target) print("目标集名称为:n", iris.target_names) print("鸢尾花特征的名字:n", iris.feature_names) # print("鸢尾花的描述:n", iris.DESCR) # iris.data.shape 12345678
数据集为: (150, 4) 目标集为: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2] 目标集名称为: ['setosa' 'versicolor' 'virginica'] 鸢尾花特征的名字: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] 123456789101112
数据基本处理
# x_train,x_test,y_train,y_test为训练集特征值、测试集特征值、训练集目标值、测试集目标值 x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22) 12
x_train.shape 1
(120, 4) 1
# 测试集占0.2 x_test.shape 12
(30, 4) 1
特征工程 - 特征预处理
transfer = StandardScaler() x_train = transfer.fit_transform(x_train) x_test = transfer.transform(x_test) 123
机器学习
实例化评估器estimator = KNeighborsClassifier() 1 模型训练
estimator.fit(x_train, y_train) 1
KNeighborsClassifier() 1
模型评估
预测值结果输出y_pre = estimator.predict(x_test) print("预测值是:n", y_pre) print("预测值和真实值的对比是:n", y_pre == y_test) 123
预测值是: [0 2 1 2 1 1 1 1 1 0 2 1 2 2 0 2 1 1 1 1 0 2 0 1 2 0 2 2 2 2] 预测值和真实值的对比是: [ True True True True True True True False True True True True True True True True True True False True True True True True True True True True True True] 123456 准确率计算
score = estimator.score(x_test, y_test) print("准确率为:n", score) 12
准确率为: 0.9333333333333333 12
相关知识
案例:鸢尾花种类预测
【机器学习】应用KNN实现鸢尾花种类预测
【机器学习小实验5】基于决策树和随机森林的鸢尾花种类预测
鸢尾花数据种类预测、分析与处理、scikit
基于tensorflow实现的鸢尾花预测模型
使用KNN算法对鸢尾花种类预测【百变AI秀】
机器学习,实现鸢尾花植物种类自动分类(大数据人工智能公司)
对鸢尾花进行分类预测
鸢尾花分类预测实战:随机森林模型
python的鸢尾花数据如何导入
网址: 鸢尾花种类预测 https://www.huajiangbk.com/newsview1842718.html
上一篇: 鸢尾花有几种品种(最常见的鸢尾品 |
下一篇: 止步·小半城植物大课堂之花草集— |
推荐分享

- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039