数据可视化实战:用Seaborn与Plotly提升机器学习结果表现力
你是否还在为机器学习项目中的数据可视化发愁?尝试了Matplotlib却做不出专业图表?本文将带你掌握Seaborn与Plotly的高级图表制作技巧,让你的数据故事更具说服力。读完本文,你将能够:
- 使用Seaborn创建 publication 级别的统计图表
- 用Plotly构建交互式可视化仪表盘
- 结合真实数据集展示机器学习结果
为什么需要高级数据可视化工具?
在机器学习工作流中,数据可视化贯穿始终:从数据探索、特征工程到模型评估。虽然Matplotlib提供了基础绘图功能,但Seaborn和Plotly能让这个过程更高效、结果更专业。
Seaborn 基于Matplotlib构建,专为统计数据可视化设计,提供了精美的默认样式和内置主题,可轻松创建复杂的多变量图表。项目中的tools_matplotlib.ipynb展示了基础可视化方法,而Seaborn在此基础上提供了更高层次的接口。
Plotly 则专注于交互式可视化,支持创建可缩放、悬停显示详情的动态图表,非常适合构建数据仪表盘和Web展示。在tools_pandas.ipynb中,我们可以看到Plotly用于地理数据可视化的示例:
csv_url = "https://raw.githubusercontent.com/plotly/datasets/master/us-cities-top-1k.csv"
Seaborn高级图表制作
安装与基础设置
首先确保已安装Seaborn:
pip install seaborn
导入必要的库:
import seaborn as sns
import matplotlib.pyplot as plt
# 设置美观的默认样式
sns.set_style("whitegrid")
# 设置中文字体支持
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
统计关系可视化
Seaborn的relplot函数是探索变量关系的强大工具,支持散点图和线图,并可通过col和row参数创建多面板图表:
# 使用内置数据集
tips = sns.load_dataset("tips")
# 创建多面板散点图
g = sns.relplot(
data=tips,
x="total_bill", y="tip", hue="smoker", style="smoker",
col="time", row="sex", height=3, aspect=1
)
# 添加标题
g.fig.suptitle("不同场景下账单金额与小费关系", y=1.05)
plt.show()
这种多维度可视化方法特别适合探索机器学习数据集中的特征关系,类似项目中02_end_to_end_machine_learning_project.ipynb的房价数据分析过程。
分类数据可视化
对于分类变量,Seaborn提供了多种专用图表,如箱线图、小提琴图和 swarm 图:
# 加载房价数据集(可替换为项目中的datasets/housing/housing.csv)
df = pd.read_csv("datasets/housing/housing.csv")
# 创建组合图表
plt.figure(figsize=(12, 6))
sns.boxplot(x="ocean_proximity", y="median_house_value", data=df)
sns.swarmplot(x="ocean_proximity", y="median_house_value", data=df,
color=".25", size=3)
plt.title("不同地区房价分布比较")
plt.xticks(rotation=45)
plt.tight_layout()
这种组合图表能同时展示数据分布和个体观测值,比单独使用箱线图或散点图提供更多信息。
Plotly交互式可视化
从静态到动态的转变
Plotly的核心优势在于交互性。与Matplotlib和Seaborn生成的静态图片不同,Plotly图表允许用户缩放、平移、悬停查看详情,甚至修改图表参数。
import plotly.express as px
import pandas as pd
# 加载项目中的泰坦尼克号数据集
df = pd.read_csv("datasets/titanic/train.csv")
# 创建交互式散点图
fig = px.scatter(
df, x="age", y="fare",
color="survived", size="pclass",
hover_data=["name", "sex"],
title="泰坦尼克号乘客年龄与票价关系"
)
# 自定义布局
fig.update_layout(
xaxis_title="年龄",
yaxis_title="票价",
coloraxis_colorbar=dict(title="是否幸存"),
hovermode="closest"
)
fig.show()
构建多面板仪表盘
Plotly的subplots功能可以创建多面板仪表板,将多个相关图表组合在一起:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
# 创建2x2子图
fig = make_subplots(
rows=2, cols=2,
subplot_titles=("年龄分布", "票价分布", "舱位分布", "幸存率"),
specs=[[{}, {}], [{"colspan": 2}, None]]
)
# 添加直方图
fig.add_trace(go.Histogram(x=df["age"], nbinsx=20), row=1, col=1)
fig.add_trace(go.Histogram(x=df["fare"], nbinsx=20), row=1, col=2)
fig.add_trace(go.Bar(x=df["pclass"].value_counts().index,
y=df["pclass"].value_counts().values), row=2, col=1)
# 更新布局
fig.update_layout(height=600, width=800, title_text="泰坦尼克号数据集探索")
fig.update_xaxes(title_text="年龄", row=1, col=1)
fig.update_xaxes(title_text="票价", row=1, col=2)
fig.update_xaxes(title_text="舱位等级", row=2, col=1)
fig.update_yaxes(title_text="人数", row=1, col=1)
fig.update_yaxes(title_text="人数", row=1, col=2)
fig.update_yaxes(title_text="人数", row=2, col=1)
fig.show()
这种仪表盘在机器学习项目的03_classification.ipynb等分类任务中特别有用,可以同时展示多个评估指标。
机器学习结果可视化案例
特征重要性热图
在特征工程阶段,可视化特征相关性和重要性至关重要:
# 假设我们已经训练好一个随机森林模型
import numpy as np
import seaborn as sns
# 生成特征重要性数据
feature_names = ["平均房间数", "平均卧室数", "平均人口数", "平均占用率", "平均收入"]
importances = model.feature_importances_
indices = np.argsort(importances)[::-1]
# 创建特征重要性条形图
plt.figure(figsize=(10, 6))
sns.barplot(x=importances[indices], y=[feature_names[i] for i in indices])
plt.title("特征重要性排序")
plt.tight_layout()
混淆矩阵可视化
模型评估阶段,混淆矩阵是分类任务的关键工具:
from sklearn.metrics import confusion_matrix
# 假设y_true和y_pred是模型的真实标签和预测标签
y_true = [0, 1, 0, 1, 1, 0, 0, 1]
y_pred = [0, 1, 0, 1, 0, 1, 0, 1]
# 创建混淆矩阵热图
cm = confusion_matrix(y_true, y_pred)
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues",
xticklabels=["负类", "正类"], yticklabels=["负类", "正类"])
plt.xlabel("预测标签")
plt.ylabel("真实标签")
plt.title("模型混淆矩阵")
plt.tight_layout()
这种可视化方法在项目的03_classification.ipynb中有详细应用,帮助直观理解模型在不同类别上的表现。
总结与进阶学习
Seaborn和Plotly为机器学习项目提供了强大的可视化工具:
- Seaborn 适合快速创建 publication 级别的统计图表
- Plotly 适合构建交互式仪表盘和Web展示
要进一步提升可视化技能,可以:
- 深入学习项目中的tools_matplotlib.ipynb掌握基础
- 探索Seaborn官方文档的高级教程
- 学习Plotly Dash框架构建完整的数据应用
通过本文介绍的方法,你可以将机器学习项目中的数据和结果以更专业、更有说服力的方式呈现,无论是在学术论文、业务报告还是技术演示中,都能让你的工作脱颖而出。
点赞收藏本文,关注后续关于深度学习可视化的高级教程!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



