鸢尾花案例之数据集可视化
1 课程概览
本课讲解如何对鸢尾花数据集进行可视化。将Bunch类型数据集转换为DataFrame,使用seaborn的lmplot函数绘制散点图,通过hue参数按标签分组着色,并使用fit_reg参数控制是否绘制拟合回归线。同时解决中文标题显示不全的问题。
2 核心概念与定义
- DataFrame:pandas中的二维数据结构,seaborn可视化需要此格式。
- seaborn:基于matplotlib的Python数据可视化库。
- lmplot:seaborn中绘制散点图的函数,支持分组着色和拟合回归线。
- hue:lmplot的分组参数,按指定列的不同值着不同颜色。
- fit_reg:lmplot的参数,控制是否绘制拟合回归线(True=绘制,False=不绘制)。
- tight_layout:matplotlib的紧密布局函数,解决标题显示不全的问题。
3 算法与模型详解
3.1 可视化流程
- 加载数据集
- 将数据集封装为DataFrame(指定列名)
- 给DataFrame新增标签列
- 使用seaborn绘制散点图
- 设置标题并显示
3.2 DataFrame封装要点
| 步骤 | 操作 | 说明 |
|---|---|---|
| 特征数据 | iris_data.data | 150×4的二维数组 |
| 列名 | iris_data.feature_names | 4个特征名 |
| 标签列 | iris_data.target | 150个标签值(0/1/2) |
3.3 lmplot函数参数
| 参数 | 说明 | 示例 |
|---|---|---|
| data | 数据集(DataFrame) | iris_df |
| x | X轴特征列名 | 'sepal length' |
| y | Y轴特征列名 | 'sepal width' |
| hue | 分组字段(按标签着色) | 'label' |
| fit_reg | 是否绘制拟合回归线 | True/False |
3.4 拟合回归线说明
- fit_reg=True:绘制拟合回归线,尽可能穿过更多点。
- fit_reg=False:不绘制拟合回归线,仅显示散点。
- 有几个分组(hue值)就绘制几条拟合回归线。
4 数学原理与推导
本课无数学推导。
5 代码示例
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
from sklearn.datasets import load_iris
def dm02_show_iris():
# 1. 加载数据集
iris_data = load_iris()
# 2. 将数据集封装为DataFrame
iris_df = pd.DataFrame(
data=iris_data.data,
columns=iris_data.feature_names
)
# 3. 给DataFrame新增标签列
iris_df['label'] = iris_data.target
# 4. 绘制散点图
sns.lmplot(
data=iris_df,
x='sepal length (cm)',
y='sepal width (cm)',
hue='label',
fit_reg=False
)
# 5. 设置标题
plt.title('iris data')
# 6. 紧密布局(解决标题显示不全)
plt.tight_layout()
# 7. 显示图像
plt.show()
if __name__ == '__main__':
dm02_show_iris()
6 重难点与易错提醒
- ❗重点:seaborn可视化需要DataFrame格式,需将Bunch数据集转换。
- ❗重点:hue参数用于分组着色,按标签列的不同值显示不同颜色。
- ❗重点:tight_layout()解决标题显示不全的问题。
- ⚠️易错:DataFrame封装时需指定columns为feature_names,否则列名显示为0、1、2、3。
- ⚠️易错:中文标题可能显示乱码,需配置中文字体或使用英文标题。
- 💡深入理解:fit_reg=True时,有几个分组就绘制几条拟合回归线。
7 课堂问答精选
Q: 为什么需要将数据集封装为DataFrame?
A: 因为seaborn可视化需要DataFrame格式的数据。原始的Bunch类型数据集不能直接用于seaborn绘图,需要通过pd.DataFrame()转换为DataFrame,并指定列名(columns=feature_names)。
Q: 标题显示不全如何解决?
A: 使用plt.tight_layout()函数,它会自动调整子图参数,使整个图像的边界与子图匹配,解决标题被截断的问题。
8 本课小结
- 可视化流程:加载数据→封装DataFrame→新增标签列→lmplot绘图→设置标题→显示。
- seaborn的lmplot函数:data指定数据,x/y指定轴,hue分组着色,fit_reg控制回归线。
- tight_layout()解决标题显示不全问题。
- DataFrame封装时需指定columns为feature_names。
9 延伸思考与实践
- 实践:修改x、y参数为花瓣长度和宽度,观察散点图变化。
- 思考:fit_reg=True和False的区别是什么?
- 预习:鸢尾花数据集的训练集和测试集划分。