数据可视化是使用图表、图形将数据直观展示的手段。在机器学习流程中,它贯穿数据理解、清洗、特征分析、结果评估全流程,帮助我们快速发现数据分布、关联、异常和规律,把枯燥的数字变成可以看懂的信息。

数据可视化在机器学习中的作用
- 观察数据分布:查看数值是集中还是分散,判断是否偏态
- 识别异常值:从图表里快速找到脱离正常范围的数据点
- 分析特征相关性:判断特征之间、特征和标签有没有关联
- 查看标签均衡性:检查分类任务样本是否倾斜
- 展示模型结果:对比预测值与真实值,直观评估模型好坏
可视化不是最终产出,是数据分析、建模过程中的探查工具。
机器学习常用图表类型
| 图表 | 用途 |
|---|---|
| 直方图 Histogram | 查看单个数值特征的分布(年龄、薪资分布) |
| 箱线图 Box Plot | 识别异常值、查看四分位数 |
| 散点图 Scatter Plot | 观察两个数值特征之间的相关关系 |
| 热力图 Heatmap | 多特征相关性矩阵 |
| 柱状图 Bar Chart | 查看分类标签数量分布 |
配套代码示例(沿用统一 data.csv)
安装必要的库
如果你使用的是 Anaconda,这些库通常已预装。否则,可以通过以下命令安装:
pip install pandas matplotlib seaborn
数据集和前面文章保持一致:
Age,Salary,Purchased
25,40000,0
45,80000,1
30,50000,0
48,,1
22,32000,0
35,60000,1
,55000,0
50,90000,1
29,43000,0
55,100000,1
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 解决中文显示
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 读取并简单清洗
df = pd.read_csv("data.csv")
df['Age'].fillna(df['Age'].mean(), inplace=True)
df['Salary'].fillna(df['Salary'].mean(), inplace=True)
# 1. 直方图:年龄分布
plt.figure(figsize=(12, 8))
plt.subplot(2,2,1)
plt.hist(df["Age"], bins=6, alpha=0.7, color="#4285d4")
plt.title("年龄分布直方图")
plt.xlabel("Age")
plt.ylabel("Count")
# 2. 箱线图:薪资,查找异常值
plt.subplot(2,2,2)
plt.boxplot(df["Salary"])
plt.title("薪资箱线图")
plt.ylabel("Salary")
# 3. 散点图:年龄 vs 薪资,按标签着色
plt.subplot(2,2,3)
sns.scatterplot(data=df, x="Age", y="Salary", hue="Purchased")
plt.title("年龄-薪资散点图")
# 4. 柱状图:标签分布
plt.subplot(2,2,4)
df["Purchased"].value_counts().plot(kind="bar", color="#4285d4")
plt.title("Purchased 标签分布")
plt.xlabel("Purchased")
plt.ylabel("Count")
plt.tight_layout()
plt.show()
服务器环境无法弹窗时,把
plt.show()替换为plt.savefig("visual.png", dpi=300)保存图片。
运行结果:

可视化注意事项
- 图表不宜过多,每张图只表达一个核心信息
- 合理选择图表类型,不要用饼图展示过多类别
- 坐标轴范围不要刻意裁剪,避免误导判断
- 可视化前优先处理缺失值,否则绘图代码容易报错
- 配色简洁统一,教程类图表推荐蓝色系为主
小结
数据可视化是数据分析的放大镜。在机器学习项目中,我们一边看图一边理解数据,很多隐藏问题单纯靠统计数字很难发现。可视化探查的结论,可以反过来指导数据清洗和特征工程。
思考题
- 如果想要查看多个特征之间的相关系数,优先使用哪一种图?
- 箱线图里的圆点代表什么含义?
0 条笔记