自学教程 学编程从这里开始

数据可视化

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

数据可视化在机器学习中的作用

  1. 观察数据分布:查看数值是集中还是分散,判断是否偏态
  2. 识别异常值:从图表里快速找到脱离正常范围的数据点
  3. 分析特征相关性:判断特征之间、特征和标签有没有关联
  4. 查看标签均衡性:检查分类任务样本是否倾斜
  5. 展示模型结果:对比预测值与真实值,直观评估模型好坏

可视化不是最终产出,是数据分析、建模过程中的探查工具。

机器学习常用图表类型

图表用途
直方图 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) 保存图片。

运行结果:

可视化注意事项

  1. 图表不宜过多,每张图只表达一个核心信息
  2. 合理选择图表类型,不要用饼图展示过多类别
  3. 坐标轴范围不要刻意裁剪,避免误导判断
  4. 可视化前优先处理缺失值,否则绘图代码容易报错
  5. 配色简洁统一,教程类图表推荐蓝色系为主

小结

数据可视化是数据分析的放大镜。在机器学习项目中,我们一边看图一边理解数据,很多隐藏问题单纯靠统计数字很难发现。可视化探查的结论,可以反过来指导数据清洗和特征工程。

思考题

  1. 如果想要查看多个特征之间的相关系数,优先使用哪一种图?
  2. 箱线图里的圆点代表什么含义?
标签:

0 条笔记