首页 分享 案例:鸢尾花种类预测

案例:鸢尾花种类预测

来源:花匠小妙招 时间:2025-02-17 15:02

学习目标

目标 知道sklearn中获取数据集的方法知道sklearn中对数据集的划分方法

本实验介绍了使用Python进行机器学习的一些基本概念。 在本案例中,将使用K-Nearest Neighbor(KNN)算法对鸢尾花的种类进行分类,并测量花的特征。

本案例目的:

遵循并理解完整的机器学习过程对机器学习原理和相关术语有基本的了解。了解评估机器学习模型的基本过程。

1 案例:鸢尾花种类预测

Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。关于数据集的具体介绍:

2 scikit-learn中数据集介绍

2.1 scikit-learn数据集API介绍 sklearn.datasets 加载获取流行数据集datasets.load_*() 获取小规模数据集,数据包含在datasets里datasets.fetch_*(data_home=None) 获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/

2.1.1 sklearn小数据集

sklearn.datasets.load_iris()

加载并返回鸢尾花数据集

2.1.2 sklearn大数据集

sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’) subset:'train'或者'test','all',可选,选择要加载的数据集。训练集的“训练”,测试集的“测试”,两者的“全部” 2.2 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)

2.3 查看数据分布

通过创建一些图,以查看不同类别是如何通过特征来区分的。 在理想情况下,标签类将由一个或多个特征对完美分隔。 在现实世界中,这种理想情况很少会发生。

seaborn介绍

Seaborn 是基于 Matplotlib 核心库进行了更高级的 API 封装,可以让你轻松地画出更漂亮的图形。而 Seaborn 的漂亮主要体现在配色更加舒服、以及图形元素的样式更加细腻。安装 pip3 install seaborn

seaborn.lmplot() 是一个非常有用的方法,它会在绘制二维散点图时,自动完成回归拟合

sns.lmplot() 里的 x, y 分别代表横纵坐标的列名,data= 是关联到数据集,hue=*代表按照 species即花的类别分类显示,fit_reg=是否进行线性拟合。http://seaborn.pydata.org/

%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')

2.4 数据集的划分

机器学习一般的数据集会划分为两个部分:

训练数据:用于训练,构建模型测试数据:在模型检验时使用,用于评估模型是否有效

划分比例:

训练集:70% 80% 75%测试集:30% 20% 25%

数据集划分api

sklearn.model_selection.train_test_split(arrays, *options) 参数: x 数据集的特征值y 数据集的标签值test_size 测试集的大小,一般为floatrandom_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)

3 总结

获取数据集【知道】 小数据: sklearn.datasets.load_*大数据集: sklearn.datasets.fetch_*数据集返回值介绍【知道】 返回值类型是bunch--是一个字典类型返回值的属性: data:特征数据数组target:标签(目标)数组DESCR:数据描述feature_names:特征名,target_names:标签(目标值)名数据集的划分【掌握】 sklearn.model_selection.train_test_split(arrays, *options)参数: x -- 特征值y -- 目标值test_size -- 测试集大小ramdom_state -- 随机数种子返回值: x_train, x_test, y_train, y_test

相关知识

鸢尾花识别案例
【机器学习】应用KNN实现鸢尾花种类预测
【机器学习小实验5】基于决策树和随机森林的鸢尾花种类预测
机器学习(五) 鸢尾花案例调优
机器学习案例——鸢尾花数据集分析
鸢尾花数据种类预测、分析与处理、scikit
鸢尾花分类,一个经典的机器学习教科书案例
重拾Iris鸢尾花数据集分析
基于tensorflow实现的鸢尾花预测模型
机器学习案例:鸢尾花分类——基于Scikit

网址: 案例:鸢尾花种类预测 https://www.huajiangbk.com/newsview1675266.html

所属分类:花卉
上一篇: 鸢尾花分类预测实战:随机森林模型
下一篇: 鸢尾花的品种有哪些最好附加图片介

推荐分享