鸢尾花数据分析与Python
鸢尾花(Iris)是一种常见的花卉,也是机器学习领域中最经典的数据集之一。这个数据集包含了150个样本,每个样本有4个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。每个样本又属于三个不同的分类:山鸢尾(Iris-Setosa)、变色鸢尾(Iris-Versicolor)和维吉尼亚鸢尾(Iris-Virginica)。通过对这些特征进行分析和建模,我们可以预测鸢尾花的品种。
本文将介绍如何使用Python进行鸢尾花数据的分析。我们将使用pandas
库进行数据处理和分析,matplotlib
库进行数据可视化,以及scikit-learn
库进行机器学习建模。
数据加载与预览
首先,我们需要加载鸢尾花数据集。scikit-learn
库已经内置了这个经典的数据集,我们可以直接使用。
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
# 将数据集转换为pandas的DataFrame格式
import pandas as pd
df = pd.DataFrame(data=iris['data'], columns=iris['feature_names'])
df['target'] = iris['target']
加载完成后,我们可以通过df.head()
方法预览前几行数据。
df.head()
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | target |
---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | |
4.9 | 3 | 1.4 | 0.2 | |
4.7 | 3.2 | 1.3 | 0.2 | |
4.6 | 3.1 | 1.5 | 0.2 | |
5 | 3.6 | 1.4 | 0.2 |
数据可视化
数据可视化是数据分析的重要步骤,它可以帮助我们了解数据的分布和特征之间的关系。我们可以使用matplotlib
库进行数据可视化。
首先,我们可以通过绘制散点图来展示花萼长度与花萼宽度的关系,并按照不同的分类用不同颜色标记。
import matplotlib.pyplot as plt
# 绘制散点图
plt.scatter(df['sepal length (cm)'], df['sepal width (cm)'], c=df['target'])
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Sepal Width (cm)')
plt.title('Iris Sepal Length vs. Width')
plt.show()
接下来,我们可以通过绘制箱线图来比较不同分类的花瓣长度的分布情况。
# 绘制箱线图
plt.boxplot([df[df['target'] == 0]['petal length (cm)'],
df[df['target'] == 1]['petal length (cm)'],
df[df['target'] == 2]['petal length (cm)']])
plt.xlabel('Target')
plt.ylabel('Petal Length (cm)')
plt.title('Iris Petal Length Distribution')
plt.xticks([1, 2, 3], ['Setosa', 'Versicolor', 'Virginica'])
plt.show()
机器学习建模
最后,我们可以使用scikit-learn
库进行机器学习建模。这里我们选择使用逻辑回归模型进行分类。
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df[iris['feature_names']], df['target'], test_size=0.2, random_state=42