机器学习常用数据集:鸢尾花(Iris)数据集介绍及可视化
一、鸢尾花数据集简介
鸢尾花数据集是机器学习领域中最经典、最常用的一个数据集之一。该数据集由美国生物学家戈斯(Ronald A. Fisher)在1936年首次引入,主要用于演示分类算法并进行模式识别。数据集中包含了三种鸢尾花(Iris Setosa、Iris Versicolor 和 Iris Virginica)每种花的50个样本,共150个样本。每个样本有4个特征,分别是:
- 花萼长度(sepal length,cm)
- 花萼宽度(sepal width,cm)
- 花瓣长度(petal length,cm)
- 花瓣宽度(petal width,cm)
通过这些特征,我们可以对鸢尾花的种类进行分类。
二、加载数据集
在Python中,我们通常会使用sklearn
库来加载鸢尾花数据集。以下是一个简单的示例代码:
import pandas as pd
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris_data = load_iris()
# 将特征和目标存入数据框
iris_df = pd.DataFrame(data=iris_data.data, columns=iris_data.feature_names)
iris_df['target'] = iris_data.target
# 查看前五行数据
print(iris_df.head())
三、数据可视化
为了更好地理解数据集,我们常常需要对数据进行可视化。以下是使用matplotlib
和seaborn
库绘制鸢尾花数据集特征分布情况的代码示例:
import seaborn as sns
import matplotlib.pyplot as plt
# 设置画布大小
plt.figure(figsize=(10, 6))
# 绘制散点图
sns.scatterplot(data=iris_df, x='sepal length (cm)', y='sepal width (cm)', hue='target', palette='deep')
# 添加图形标题和标签
plt.title('鸢尾花 - 花萼长度及花萼宽度散点图')
plt.xlabel('花萼长度 (cm)')
plt.ylabel('花萼宽度 (cm)')
plt.legend(labels=iris_data.target_names)
plt.show()
此外,我们还可以绘制热图来观察特征之间的相关性:
# 绘制相关性热图
plt.figure(figsize=(8, 6))
sns.heatmap(iris_df.corr(), annot=True, cmap='coolwarm')
plt.title('鸢尾花特征相关性热图')
plt.show()
四、使用案例
下面是一个简单的分类模型示例,使用scikit-learn
中的KNeighborsClassifier
进行鸢尾花的分类。
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, confusion_matrix
# 划分数据集为训练集和测试集
X = iris_df.iloc[:, :-1] # 特征
y = iris_df['target'] # 目标
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建KNN分类器并进行训练
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# 进行预测
y_pred = knn.predict(X_test)
# 打印分类报告和混淆矩阵
print(classification_report(y_test, y_pred, target_names=iris_data.target_names))
print(confusion_matrix(y_test, y_pred))
五、总结
鸢尾花数据集作为一个经典的机器学习数据集,不仅简单易于理解,而且在数据科学和机器学习学习中有着重要的地位。通过对该数据集的分析和可视化,我们能够更好地理解机器学习算法的工作原理,为后续的学习和研究打下坚实的基础。希望本文能帮助到读者更好地了解鸢尾花数据集以及机器学习的基本应用。