首页 > 分享 > 鸢尾花分类实践任务

鸢尾花分类实践任务

目录

一、数据加载与预处理

1. 数据加载

2. 数据统计与类别平衡检查

二、数据可视化

1. 散点图矩阵

2. 箱线图

三、数据集划分

四、模型训练与评估

1. K 近邻分类器(KNN)

2. 决策树分类器

3. 模型评估

五、KNN 不同 k 值准确率对比

一、数据加载与预处理 1. 数据加载

步骤1:环境准备与数据加载

1.安装库:  

pip install numpy pandas matplotlib scikit-learn

软件包安装完成后就可以运用相关的函数

python

from sklearn.datasets import load_iris

import pandas as pd

iris = load_iris()

df = pd.DataFrame(iris.data, columns=iris.feature_names)

df['target'] = iris.target

解释:从 sklearn 库中加载鸢尾花数据集,将其转换为 pandas 的 DataFrame 格式,方便后续的数据处理和分析。同时添加 target 列作为类别标签,其中 0 代表山鸢尾(setosa),1 代表变色鸢尾(versicolor),2 代表维吉尼亚鸢尾(virginica)。 2. 数据统计与类别平衡检查

python

print(df.describe())

print(df['target'].value_counts())

解释: df.describe() 用于计算各特征的基本统计信息,如均值、标准差、最小值、最大值等,帮助我们了解数据的分布情况。df['target'].value_counts() 用于统计每个类别标签的出现次数,以检查数据集的类别是否平衡。在鸢尾花数据集中,每个类别有 50 个样本,说明数据集是平衡的。遇到的问题:输出的数据分布情况可能会出现省略就像这样解决方法:在 pandas 中,可通过设置显示选项让省略的列全部输出。

import pandas as pd

pd.set_option("display.max_columns", None)

pd.set_option("display.width", 1000)

display.max_columns:控制 DataFrame 显示的最大列数,设为 None 时会显示所有列。display.width:调整显示宽度,确保列内容完整展示,避免因终端宽度不足导致的折叠或省略。
执行上述设置后,再调用 describe() 等方法,DataFrame 的所有列都会完整显示,不再出现省略号。以下是制作好的表格

二、数据可视化

1. 散点图矩阵

python

import matplotlib.pyplot as plt

from pandas.plotting import scatter_matrix

scatter_matrix(df, figsize=(12,8), c=df['target'], marker='o')

plt.show()

解释:matplotlib.pyplot 是 Python 常用的绘图库,用于生成可视化图表。scatter_matrix 是 pandas 提供的工具,专门用于绘制散点矩阵图,展示数据集中各特征两两之间的散点关系。df:输入的数据集(需包含特征和标签,如之前处理的鸢尾花数据集 df)。figsize=(12, 8):设置图表的尺寸(宽 12 英寸,高 8 英寸)。c=df['target']:根据 target 标签对数据点上色,不同颜色代表鸢尾花的不同品种。marker='o':设置数据点的标记样式为圆形。 2. 箱线图

python

df.boxplot(by='target', figsize=(10, 6))

plt.show()

最终运行效果:会生成一张图,里面包含多个箱线图,每个箱线图对应一个鸢尾花品种,直观展示该品种在各个特征上的数据分布情况(比如数据的集中趋势、离散程度等)。

如图:

解释:绘制箱线图,按类别标签对数据进行分组,展示每个类别下各特征的分布情况。箱线图可以展示数据的中位数、四分位数、异常值等信息,帮助我们比较不同类别在各特征上的差异。

这串代码的作用是:通过绘制箱线图,对比不同鸢尾花品种(由 target 区分)在各个特征上的数据分布。具体解释如下:

df.boxplot()

让数据表格 df 绘制箱线图。箱线图能展示数据的中位数、四分位数、异常值等分布特征。

by='target'

表示 “按照 target 这一列的数据分组”。因为 target 代表鸢尾花的品种(0、1、2 对应不同品种),这样就会针对每个品种,分别绘制它们在各个特征(如花瓣长度、花萼宽度等)上的箱线图,方便对比不同品种的数据差异。

figsize=(10, 6)

规定图片的尺寸,让画出的图宽是 10 英寸,高是 6 英寸,确保图表展示清晰。

plt.show()

把绘制好的箱线图显示出来,不然代码运行后看不到图形结果。

三、数据集划分

python

from sklearn.model_selection import train_test_split

X = df.drop('target', axis=1)

y = df['target']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

解释:使用 train_test_split 函数将数据集划分为训练集和测试集,其中测试集占总数据集的 20%。random_state=42 保证了每次运行代码时划分的结果是一致的,方便结果的复现。划分后的训练集用于模型的训练,测试集用于评估模型的性能。

四、模型训练与评估

1. K 近邻分类器(KNN)

python

from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors=3)

knn.fit(X_train, y_train)

y_pred_knn = knn.predict(X_test)

解释: 导入 KNeighborsClassifier 类,创建一个 KNN 分类器对象,设置 n_neighbors=3,表示使用 3 个最近邻进行分类。使用 fit 方法对训练集进行训练。使用 predict 方法对测试集进行预测,得到预测结果 y_pred_knn。 2. 决策树分类器

python

from sklearn.tree import DecisionTreeClassifier, plot_tree

dt = DecisionTreeClassifier(max_depth=2)

dt.fit(X_train, y_train)

plt.figure(figsize=(12,8))

plot_tree(dt, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)

plt.show()

解释: 导入 DecisionTreeClassifier 类和 plot_tree 函数,创建一个决策树分类器对象,设置 max_depth=2,限制决策树的最大深度为 2。使用 fit 方法对训练集进行训练。使用 plot_tree 函数绘制决策树,并显示图形。 3. 模型评估

python

from sklearn.metrics import classification_report

print("KNN报告:n", classification_report(y_test, y_pred_knn))

print("决策树报告:n", classification_report(y_test, dt.predict(X_test)))

解释:使用 classification_report 函数生成分类报告,包括精确率、召回率、F1 值等指标,用于评估模型的性能。

五、KNN 不同 k 值准确率对比

python

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

k_values = range(1, 15)

accuracies = []

for k in k_values:

knn = KNeighborsClassifier(n_neighbors=k)

knn.fit(X_train, y_train)

accuracies.append(knn.score(X_test, y_test))

plt.plot(k_values, accuracies, marker='o')

plt.xlabel('k')

plt.ylabel('Test Accuracy')

plt.title('KNN不同k值准确率对比')

plt.show()

解释: 为了确保中文和负号能正常显示,设置 matplotlib 的字体和负号显示参数。遍历 k 值从 1 到 14,创建不同 k 值的 KNN 分类器,对训练集进行训练,并计算在测试集上的准确率。使用 plt.plot 函数绘制 k 值与准确率的关系曲线,帮助我们选择最优的 k 值。

通过以上步骤,我们完成了对鸢尾花数据集的加载、预处理、可视化、模型训练和评估,以及对 KNN 分类器不同 k 值的准确率对比分析。

相关知识

机器学习入门实践——鸢尾花分类
第3章(下)基于Softmax回归完成鸢尾花分类任务
教学课件:6、机器学习入门实践:鸢尾花分类.pptx
基于KNN的鸢尾花分类
机器学习实战第1天:鸢尾花分类任务
KNN鸢尾花分类
Python机器学习案例:鸢尾花分类
朴素贝叶斯算法对鸢尾花分类
机器学习实战:鸢尾花分类
pytorch 鸢尾花分类

网址: 鸢尾花分类实践任务 https://m.huajiangbk.com/newsview2500332.html

所属分类:花卉
上一篇: 驾驶舱看板能否替代Excel?数
下一篇: 微生物研究必备:Cytoscap