Iris鸢尾花与Python:一种机器学习的经典示例

在数据科学领域,Iris鸢尾花数据集是一个经典而常用的机器学习示例。这个数据集由生物学家阿尔弗雷德·维尔逊于1936年提出,记录了三种不同品种的鸢尾花(Setosa, Versicolor, Virginica)的四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。

本文将带你一步步通过Python实现对鸢尾花数据集进行可视化和分类。我们将使用scikit-learn库中的决策树分类器来构建模型,并使用matplotlib库来绘制可视化图。接下来,我们将具体介绍这个流程。

flowchart TD
    A[读取数据] --> B[数据可视化]
    B --> C[数据准备]
    C --> D[建立分类模型]
    D --> E[模型评估]
    E --> F[预测新数据]

步骤一:读取数据

首先,我们需要安装必要的库并加载鸢尾花数据集。

# 安装所需库
!pip install scikit-learn matplotlib seaborn

# 导入库
import pandas as pd
from sklearn import datasets

# 加载鸢尾花数据集
iris = datasets.load_iris()
data = pd.DataFrame(data=iris.data, columns=iris.feature_names)
data['target'] = iris.target
print(data.head())

步骤二:数据可视化

使用seaborn库进行数据的可视化,以观察不同品种之间的差异。

import seaborn as sns
import matplotlib.pyplot as plt

# 画出对角线图
sns.pairplot(data, hue='target', markers=["o", "s", "D"])
plt.show()

这将生成一组散点图,帮助我们观察四个特征之间的分布及其与不同鸢尾花品种的关系。

步骤三:数据准备

分割数据集为训练集和测试集,以便于模型评估。

from sklearn.model_selection import train_test_split

X = data.iloc[:, :-1]  # 特征
y = data['target']      # 标签

# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

步骤四:建立分类模型

在这一步,我们将建立一个决策树分类器。

from sklearn.tree import DecisionTreeClassifier

# 创建决策树分类器
classifier = DecisionTreeClassifier()
classifier.fit(X_train, y_train)

步骤五:模型评估

使用测试集对模型进行评估。

from sklearn.metrics import classification_report, confusion_matrix

y_pred = classifier.predict(X_test)

# 打印评估结果
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

步骤六:预测新数据

最后,我们可以使用训练好的模型对新数据进行预测。

# 新样本进行预测
new_data = [[5.1, 3.5, 1.4, 0.2]]
pred = classifier.predict(new_data)
print(f"预测的鸢尾花品种为: {iris.target_names[pred][0]}")
journey
    title 机器学习之旅
    section 数据准备
      读取鸢尾花数据集: 5: 自然
      数据可视化: 4: 顺利
    section 模型建立
      建立决策树: 3: 挑战
      训练模型: 5: 成功
    section 模型评估
      测试模型: 4: 收获
      预测新数据: 5: 高兴

结尾

通过以上步骤,我们已经成功掌握了使用Python对鸢尾花数据集进行分类的基本流程。这不仅能够帮助我们了解机器学习的基本原理,还为我们将来的数据分析奠定了基础。无论是数据可视化、模型构建,还是评估和预测,每一步都至关重要。通过实践,我们能够更深刻地理解数据科学领域的魅力和应用,希望你能够继续探索更多有趣的数据集和机器学习算法!