Python中的鸢尾花数据集分析
鸢尾花数据集是机器学习领域中经典的数据集之一,它包含了三种不同鸢尾花的花瓣和花萼的长度和宽度的测量值。这个数据集通常被用来进行分类算法的训练和测试,以预测鸢尾花的种类。本文将使用Python语言对鸢尾花数据集进行分析和可视化展示。
载入数据集
首先,我们需要导入一些必要的库和鸢尾花数据集。在Python中,可以使用pandas
库来处理数据,使用seaborn
和matplotlib
库来进行数据可视化。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 载入鸢尾花数据集
iris = sns.load_dataset('iris')
print(iris.head())
运行以上代码,我们可以看到鸢尾花数据集的前几行数据:
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa |
数据集中包含了4个特征:花萼长度(sepal_length)、花萼宽度(sepal_width)、花瓣长度(petal_length)和花瓣宽度(petal_width),以及一个目标变量:鸢尾花的种类(species)。
数据集的统计描述
接下来,我们可以利用describe()
方法来查看数据集的统计描述,包括每个特征的均值、标准差、最小值、最大值等。
print(iris.describe())
运行以上代码,我们可以得到数据集的统计描述信息:
sepal_length sepal_width petal_length petal_width
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.057333 3.758000 1.199333
std 0.828066 0.435866 1.765298 0.762238
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000
可以看到,数据集一共包含了150条数据,每个特征的平均值、标准差、最小值、最大值等信息都被列出。
数据可视化
接下来,我们将使用seaborn
库对数据集进行可视化展示,以更直观地理解数据之间的关系。我们可以通过散点图、箱线图等方式来显示数据之间的分布和相关性。
散点图
首先,我们可以用散点图来展示花瓣长度和花瓣宽度之间的关系。
sns.scatterplot(x='petal_length', y='petal_width', hue='species', data=iris)
plt.show()
运行以上代码,我们将得到一个展示花瓣长度和花瓣宽度之间关系的散点图。不同种类的花将以不同颜色表示。
箱线图
接着,我们可以使用箱线图来展示花萼长度在各个种类之间的分布情况。
sns.boxplot(x='species', y='sepal_length', data=iris)
plt.show()
运行以上代码,我们将得到一个展示花萼长度在各个鸢尾花种类之间分布情况的箱线图。
数据预处理
在进行机器学习模型的训练之前,我们通常需要对数据集进行预处理,包括缺失值处理、特征工程等操作。在这个示例中,数据集较为干净,不包含缺失值,因此我们可以直接进行特征选择和划分数据集。
from sklearn.model_selection import train_test_split
# 特征选择
X = iris.drop('species', axis=1)
y = iris['species']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
以上代码中,我们使用drop()
方法将目标变量species
去除,将剩余的特征作为模型的输入。然后,我们将数据集划分为训练集和测试集,其中测试集占总数据的20%。
构建分类模型
接下来,我们将构建一个简单的分类模型来对鸢尾花的种类进行预测。在这里,我们选择使用RandomForestClassifier
来进行训练和预测。
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 训练模型
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)
# 预测
y_pred = clf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
运行以上代码,我们可以得到该模型在测试集上的准确率。样例输出如下:
Accuracy: 0.9666666666666667
可以看到,我们的分类模型在测试集上的准确率达到了96.67%,预测效果还是相当不错的。
结论
通过本文的介绍,我们了解了如何使用Python对鸢尾花数据集进行分析和可视化展示,以及如何构建一个简单的分类模型来预测鸢尾花的种类。