机器学习案例一:鸢尾花
1
from sklearn import datasets import pandas as pd import numpy as np iris = datasets.load_iris() #Loading the dataset print(iris.keys()) # dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module']) 1234567
下面是对这段代码的解释:
from sklearn import datasets: 这行代码导入了datasets模块,该模块包含了一些常用的示例数据集,其中包括鸢尾花数据集。
import pandas as pd: 这行代码导入了pandas库并将其命名为pd。
import numpy as np: 这行代码导入了numpy库并将其命名为np。
iris = datasets.load_iris(): 这行代码使用datasets模块中的load_iris()函数来加载鸢尾花数据集。加载后的数据被赋值给变量iris。
iris.keys(): 这行代码调用了iris数据集的keys()方法,返回了一个包含数据集的键(key)的列表。这些键表示数据集的不同方面。返回的键包括:
'data': 包含样本数据的numpy数组。'target': 包含每个样本对应的目标类别(0、1、2)的numpy数组。'frame': 数据集的一个备用表示,通常不会使用。'target_names': 目标类别的名称。'DESCR': 数据集的描述文本,包括数据集的来源和特征描述等信息。'feature_names': 特征的名称。'filename': 数据集文件的路径(如果适用)。'data_module': 数据集的Python模块路径。这段代码演示了如何加载鸢尾花数据集,并访问其中的不同方面,如数据、目标类别、特征名称等。通常,这些数据可以用于机器学习任务,如分类、聚类等。
2
这段代码使用pandas库创建了一个名为iris的DataFrame,将鸢尾花数据集的特征数据和目标类别合并到一个表格中。下面是对这段代码的解释:
iris = pd.DataFrame( data=np.c_[iris['data'], iris['target']], columns=iris['feature_names'] + ['target'] ) 1234
pd.DataFrame(...): 这是pandas库中用于创建DataFrame的函数。
data=np.c_[iris['data'], iris['target']]: 这里使用了numpy的np.c_[]函数,将鸢尾花数据集的特征数据和目标类别按列合并。iris['data']表示特征数据,iris['target']表示目标类别。np.c_[]函数的作用是按列连接两个数组,将它们合并成一个二维数组。
columns=iris['feature_names'] + ['target']: 这里为DataFrame的列指定了列名。iris['feature_names']表示特征名称,['target']表示目标类别的列名。通过将特征名称列表和目标类别列名连接在一起,创建了DataFrame的列名。
综上所述,这段代码创建了一个DataFrame,其中包含了鸢尾花数据集的所有样本数据以及目标类别。DataFrame的列名由特征名称和目标类别列名组成。这样的数据结构更适合进行数据分析、处理和机器学习任务。
3
species = [] for i in range(len(iris['target'])): if iris['target'][i] == 0: species.append("setosa") elif iris['target'][i] == 1: species.append('versicolor') else: species.append('virginica') iris['species'] = species 123456789101112
这段代码是为了将鸢尾花数据集(iris dataset)中的目标值(target)转换为对应的鸢尾花品种名称,并将结果存储在新的一个名为 species 的列表中。代码中的三个条件分支根据目标值的不同,将对应的品种名称添加到 species 列表中。
让我逐步解释代码的运行过程:
species = []:在开始时,创建一个空列表 species,用于存储转换后的品种名称。
for i in range(len(iris['target']))::通过循环遍历鸢尾花数据集的目标值。len(iris['target']) 返回目标值列表的长度,因此循环将从 0 到 len(iris['target']) - 1 的索引进行迭代。
if iris['target'][i] == 0::检查当前目标值是否等于 0,如果是,则表示对应的品种是 “setosa”,因此将 “setosa” 添加到 species 列表中。
elif iris['target'][i] == 1::如果目标值不等于 0 但等于 1,那么表示对应的品种是 “versicolor”,因此将 “versicolor” 添加到 species 列表中。
else::如果目标值既不是 0 也不是 1,那么就表示对应的品种是 “virginica”,因此将 “virginica” 添加到 species 列表中。
iris['species'] = species:在循环结束后,将存储品种名称的 species 列表赋值给鸢尾花数据集中的一个新列,命名为 species。这样,每个样本都有了对应的品种名称。
通过这段代码,你可以在鸢尾花数据集中创建一个新的列 species,其中包含每个样本对应的品种名称,从而更方便地进行品种分类的分析和可视化。不过,请注意在运行这段代码之前,确保你已经正确加载了鸢尾花数据集,并且 iris['target'] 和 iris['species'] 是存在的数据结构。
4
iris.groupby('species').size() 1
这段代码使用了 Pandas 库中的 groupby() 函数,针对鸢尾花数据集(iris dataset)中的 species 列进行分组,并计算每个品种出现的次数。具体来说,代码执行后将返回一个包含各个品种及其对应出现次数的 Series 对象。
假设你已经正确加载了鸢尾花数据集,并且 iris 是一个包含数据的 DataFrame。让我逐步解释这段代码:
iris.groupby('species'):这部分代码使用了 Pandas 的 groupby() 函数,它根据指定的列名(这里是 'species')对数据进行分组。这意味着数据将按照不同的品种(setosa、versicolor、virginica)进行分组。
.size():在进行分组后,通过调用 size() 函数,计算每个分组中的元素数量(即每个品种出现的次数)。
综合起来,执行 iris.groupby('species').size() 后,你会得到一个 Series,其中每个品种作为索引,对应的值是该品种在数据集中出现的次数。这样的结果可以帮助你了解各个鸢尾花品种在数据集中的分布情况。
5
iris.describe() 1
iris.describe() 是一个用于统计描述性统计信息的 Pandas 函数,针对鸢尾花数据集(iris dataset)的数值列进行统计分析。该函数会生成关于数据集中各个数值特征的统计信息,包括均值、标准差、最小值、25% 分位数、中位数(50% 分位数)、75% 分位数和最大值。
假设你已经正确加载了鸢尾花数据集,并且 iris 是一个包含数据的 DataFrame。执行 iris.describe() 后,你将会得到一个包含统计信息的表格,其中每一列代表一个数值特征,每一行代表一个统计指标。以下是统计信息的各个指标的含义:
count:非缺失值的数量。mean:平均值。std:标准差。min:最小值。25%:25% 的分位数,也称为第一四分位数,表示数据中小于或等于 25% 数据的值。50%:50% 的分位数,也称为中位数,表示数据中小于或等于 50% 数据的值。75%:75% 的分位数,也称为第三四分位数,表示数据中小于或等于 75% 数据的值。max:最大值。这些统计信息可以帮助你了解数据的分布情况、集中趋势和离散程度,从而更好地理解鸢尾花数据集的特征。通常,通过分析这些统计信息,你可以获得对数据集整体情况的初步印象,并在进行进一步的数据探索和分析时有所指导。
6
import matplotlib.pyplot as plt setosa = iris[iris.species == "setosa"] versicolor = iris[iris.species=='versicolor'] virginica = iris[iris.species=='virginica'] fig, ax = plt.subplots() fig.set_size_inches(13, 7) # adjusting the length and width of plot # lables and scatter points ax.scatter(setosa['petal length (cm)'], setosa['petal width (cm)'], label="Setosa", facecolor="blue") ax.scatter(versicolor['petal length (cm)'], versicolor['petal width (cm)'], label="Versicolor", facecolor="green") ax.scatter(virginica['petal length (cm)'], virginica['petal width (cm)'], label="Virginica", facecolor="red") ax.set_xlabel("petal length (cm)") ax.set_ylabel("petal width (cm)") ax.grid() ax.set_title("Iris petals") ax.legend()
1234567891011121314151617181920这段代码使用了Python的Matplotlib库来创建一个散点图,展示了鸢尾花数据集中不同种类(setosa、versicolor和virginica)的花瓣长度(petal length)和花瓣宽度(petal width)之间的关系。以下是代码的解释:
导入Matplotlib库:首先,代码导入了Matplotlib库的pyplot模块,将其命名为plt,以便后续使用该模块中的函数来创建和操作图形。
数据分组:代码使用类似DataFrame的结构(可能是Pandas库中的DataFrame)来分别创建名为setosa、versicolor和virginica的子数据集。这些子数据集根据花的种类(species)从原始iris数据集中筛选出不同种类的鸢尾花。
创建图形:通过plt.subplots()函数创建一个包含单个子图的图形对象,并将其分配给fig和ax变量。接着,使用fig.set_size_inches()设置图形的尺寸,使其长度为13英寸,宽度为7英寸。
绘制散点图:使用ax.scatter()函数绘制散点图。每个ax.scatter()调用绘制一个特定种类的鸢尾花的花瓣长度和宽度数据。不同种类的花使用不同的颜色(蓝色、绿色和红色)来区分。label参数指定了每个散点集的标签,facecolor参数指定了散点的填充颜色。
设置坐标轴标签:使用ax.set_xlabel()和ax.set_ylabel()设置X轴和Y轴的标签,分别为"petal length (cm)“和"petal width (cm)”。
添加网格线:通过ax.grid()函数在图中添加网格线,以帮助更好地查看数据。
设置图标题:使用ax.set_title()设置图的标题为"Iris petals"。
添加图例:通过ax.legend()函数在图的适当位置添加图例,显示不同种类的鸢尾花的标识。
总之,这段代码创建了一个散点图,用于比较不同种类的鸢尾花的花瓣长度和宽度之间的关系。通过不同颜色的散点和图例,可以直观地区分不同种类的花。这样的可视化有助于展示数据之间的模式和趋势,以及不同种类之间的差异。
7
from sklearn.model_selection import train_test_split # Droping the target and species since we only need the measurements X = iris.drop(['target','species'], axis=1) # converting into numpy array and assigning petal length and petal width X = X.to_numpy()[:, (2,3)] y = iris['target'] # Splitting into train and test X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.5, random_state=42) 1234567891011
这段代码涉及到使用 scikit-learn 库中的 train_test_split 函数,对数据集进行训练集和测试集的分割。以下是代码的解释:
导入必要的库:首先,代码导入了从 scikit-learn 库中的 train_test_split 函数,这个函数用于将数据集分割成训练集和测试集。
特征和标签的准备:代码从鸢尾花数据集中移除了 ‘target’ 列和 ‘species’ 列,因为只需要花的测量数据作为特征。这一步骤是为了获取仅包含花瓣长度和花瓣宽度这两个特征的数据。然后,通过 .to_numpy() 方法将特征转换为 NumPy 数组,并提取出特征矩阵 X,其中只包含了第 2 列(花瓣长度)和第 3 列(花瓣宽度)的数据。
标签的准备:将原始数据集中的 ‘target’ 列作为标签数组 y。这个数组包含了鸢尾花的分类标签,用来表示花的种类。
数据集分割:使用 train_test_split 函数,将特征矩阵 X 和标签数组 y 分割成训练集和测试集。具体来说,代码设置了测试集的大小为 50%(test_size=0.5),并且使用了随机种子 random_state=42,以确保随机划分的结果可重复。
分割结果:分割后的结果是四个数组:X_train 包含训练集的特征数据,X_test 包含测试集的特征数据,y_train 包含训练集的标签数据,y_test 包含测试集的标签数据。
总之,这段代码的主要目的是将鸢尾花数据集分割成训练集和测试集,以便后续可以使用这些数据来训练机器学习模型并进行性能评估。训练集包含一部分数据用于模型的训练,测试集用于评估模型的泛化能力。
相关知识
Python机器学习案例:鸢尾花分类
机器学习案例一:鸢尾花
机器学习(五) 鸢尾花案例调优
鸢尾花分类,一个经典的机器学习教科书案例
机器学习案例——鸢尾花数据集分析
[机器学习基础][笔记] 一、鸢尾花分类
机器学习——Day 3 KNN实现鸢尾花案例分类
机器学习案例:鸢尾花分类——基于Scikit
机器学习鸢尾花数据集
机器学习(1)机器学习基础 && 鸢尾花数据集
网址: 机器学习案例一:鸢尾花 https://www.huajiangbk.com/newsview1950375.html
上一篇: 鸢尾花与新闻聚类实战 |
下一篇: 鸢尾花数据集探索 |
推荐分享

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