61、数据可视化:从 Matplotlib 到 Seaborn

数据可视化:从 Matplotlib 到 Seaborn

1. Matplotlib 中的三角函数绘图

在数据可视化中,Matplotlib 是一个强大的工具,它不仅能绘制常规图形,还能轻松展示三角函数的图形。以下是绘制正弦和余弦函数的代码示例:

import numpy as np
import math
x = np.linspace(0, 2*math.pi, 101)
s = np.sin(x)
c = np.cos(x)
import matplotlib.pyplot as plt
plt.plot (s)
plt.plot (c)
plt.show()

上述代码使用了 NumPy 的 linspace() sin() cos() 函数分别定义了变量 x s c ,然后通过 Pyplot 的 plot() 函数展示了正弦和余弦函数的图形。

2. 在 Matplotlib 中显示 IQ 分数

我们可以使用 Matplotlib 绘制直方图来展示基于正态分布的 IQ 分数。以下是相应的代码:

import numpy as np
import matplotlib.pyplot as plt
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
# the histogram of the data
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', 
alpha=0.75)
plt.xlabel('Intelligence')
plt.ylabel('Probability')
plt.title('Histogram of IQ')
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()

此代码先定义了标量变量 mu sigma ,然后生成包含随机点的 NumPy 变量 x 。接着,通过 hist() 函数的返回值初始化变量 n bins patches ,最后使用 plot() 函数绘制直方图。

3. 在 Matplotlib 中绘制最佳拟合线

下面的代码展示了如何在 Matplotlib 中绘制最佳拟合线:

import numpy as np
xs = np.array([1,2,3,4,5], dtype=np.float64)
ys = np.array([1,2,3,4,5], dtype=np.float64)
def best_fit_slope(xs,ys):
  m = (((np.mean(xs)*np.mean(ys))-np.mean(xs*ys)) /
       ((np.mean(xs)**2) - np.mean(xs**2)))
  b = np.mean(ys) - m * np.mean(xs)
  return m, b
m,b = best_fit_slope(xs,ys)
print('m:',m,'b:',b)
regression_line = [(m*x)+b for x in xs]
import matplotlib.pyplot as plt
from matplotlib import style
style.use('ggplot')
plt.scatter(xs,ys,color='#0000FF')
plt.plot(xs, regression_line)
plt.show()

这段代码定义了 NumPy 数组变量 xs ys ,并将它们传入 best_fit_slope() 函数计算最佳拟合线的斜率 m 和 y 轴截距 b 。然后使用 scatter() 函数展示散点图,再用 plot() 函数展示最佳拟合线。

4. Sklearn 简介

Sklearn 是 Python 中用于机器学习的通用顶级库,其官网为 https://scikit - learn.org/stable 。它支持大量的机器学习算法,包括分类算法(如逻辑回归、朴素贝叶斯、决策树、随机森林和支持向量机)、回归算法、聚类算法等,还支持降维技术(如主成分分析)、超参数调整、数据缩放和预处理、交叉验证等。

Sklearn 还提供了各种内置数据集,以下将介绍其中的一些数据集及相关操作。

4.1 Sklearn 中的 Digits 数据集

Digits 数据集包含 1797 个 8×8 的小图像,每个图像是一个手写数字。以下是加载和展示该数据集的代码示例:

from sklearn import datasets
# Load in the 'digits' data
digits = datasets.load_digits()
# Print the 'digits' data
print(digits)

此代码导入 datasets 模块后,用 load_digits() 函数加载 Digits 数据集并打印其内容。

如果要绘制数据集中的某个数字,可以使用以下代码:

from sklearn.datasets import load_digits
from matplotlib import pyplot as plt
digits = load_digits()
#set interpolation='none'
fig = plt.figure(figsize=(3, 3))
plt.imshow(digits['images'][66], cmap="gray", 
interpolation='none')
plt.show()

该代码导入 load_digits 类,加载数据集,然后使用 imshow() 函数展示指定数字的图像。

4.2 Sklearn 中的 Iris 数据集

Iris 数据集包含三种不同类型鸢尾花的花瓣和萼片的长度数据。以下是加载和查看该数据集的代码:

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
print("=> iris keys:")
for key in iris.keys():
  print(key)
print()
print("=> iris feature names:")
for feature in iris.feature_names:
  print(feature)
print()
X = iris.data[:, [2, 3]]
y = iris.target
print('=> Class labels:', np.unique(y))
print()
print("=> target:")
print(iris.target)
print()
print("=> all data:")
print(iris.data)

代码先导入必要的库,然后使用 load_iris() 函数加载数据集。通过循环打印数据集的键和特征名称,接着提取特定列的数据并打印类别标签、目标值和所有数据。

还可以将 Iris 数据集加载到 Pandas 数据框中:

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
print("=> IRIS feature names:")
for feature in iris.feature_names:
  print(feature)
print()
# Create a dataframe with the feature variables
df = pd.DataFrame(iris.data, columns=iris.feature_names)
print("=> number of rows:")
print(len(df))
print()
print("=> number of columns:")
print(len(df.columns))
print()
print("=> number of rows and columns:")
print(df.shape)
print()
print("=> number of elements:")
print(df.size)
print()
print("=> IRIS details:")
print(df.info())
print()
print("=> top five rows:")
print(df.head())
print()
X = iris.data[:, [2, 3]]
y = iris.target
print('=> Class labels:', np.unique(y))

此代码将 Iris 数据集加载到 Pandas 数据框 df 中,并使用数据框的方法展示行数、列数、元素数量、数据集详细信息和前五行数据,同时打印类别标签。

4.3 Sklearn 中的 Olivetti Faces 数据集

Olivetti Faces 数据集包含一组在 1992 年 4 月至 1994 年 4 月期间于 AT&T 实验室剑桥拍摄的人脸图像。以下是加载和展示该数据集的代码:

import sklearn
from sklearn.datasets import fetch_olivetti_faces
faces = fetch_olivetti_faces()
import matplotlib.pyplot as plt
# display figures in inches
fig = plt.figure(figsize=(6, 6))  
fig.subplots_adjust(left=0, right=1, bottom=0, top=1, 
hspace=0.05, wspace=0.05)
# plot the faces:
for i in range(64):
  ax = fig.add_subplot(8, 8, i + 1, xticks=[], yticks=[])
  ax.imshow(faces.images[i], cmap=plt.cm.bone, 
interpolation='nearest')
plt.show()

代码先导入必要的库,使用 fetch_olivetti_faces() 函数加载数据集,然后通过循环在 8×8 的网格中展示 64 张人脸图像。

4.4 流程总结

下面是使用 Sklearn 处理数据集的一般流程:

graph LR
    A[导入必要的库] --> B[加载数据集]
    B --> C[查看数据集信息]
    C --> D[数据预处理(可选)]
    D --> E[数据可视化(可选)]
    E --> F[模型训练(可选)]
    F --> G[模型评估(可选)]

4.5 各数据集操作对比

数据集 加载函数 数据内容 操作示例
Digits datasets.load_digits() 1797 个 8×8 手写数字图像 打印数据集、绘制单个数字图像
Iris datasets.load_iris() 三种鸢尾花的花瓣和萼片长度数据 查看数据集键和特征、加载到 Pandas 数据框
Olivetti Faces fetch_olivetti_faces() 人脸图像 在 8×8 网格中展示 64 张人脸图像

5. Seaborn 数据可视化

5.1 Seaborn 简介

Seaborn 是一个用于数据可视化的 Python 包,它为 Matplotlib 提供了高级接口。与 Matplotlib 相比,Seaborn 更易于使用,并且对 Matplotlib 进行了扩展,但它的功能不如 Matplotlib 强大。

Seaborn 解决了 Matplotlib 的两个挑战:
- 默认参数问题 :Seaborn 使用不同的参数,比 Matplotlib 的默认渲染提供了更大的灵活性,例如在颜色、坐标轴刻度和样式等方面。
- 数据框绘图问题 :Seaborn 使得绘制整个数据框(类似于 Pandas)比在 Matplotlib 中更容易。不过,由于 Seaborn 扩展了 Matplotlib,了解 Matplotlib 仍然是有益的,这将简化学习曲线。

5.2 Seaborn 的特性和方法

Seaborn 具有以下一些特性:
- 缩放 Seaborn 绘图
- 设置绘图样式
- 设置图形大小
- 旋转标签文本
- 设置 x 轴或 y 轴的范围
- 设置对数刻度
- 添加标题

一些有用的 Seaborn 方法:
- plt.xlabel() :设置 x 轴标签
- plt.ylabel() :设置 y 轴标签
- plt.annotate() :添加注释
- plt.legend() :显示图例
- plt.ylim() :设置 y 轴范围
- plt.savefig() :保存图形

5.3 Seaborn 内置数据集示例

Seaborn 支持各种内置数据集,如 Iris 数据集和 Titanic 数据集。下面以 “tips” 数据集为例,展示如何显示其行:

import seaborn as sns

# 加载 tips 数据集
tips = sns.load_dataset("tips")

# 显示数据集行数
print(tips)

此代码使用 sns.load_dataset() 函数加载 “tips” 数据集,并打印其内容。

5.4 Seaborn 与 Matplotlib、Sklearn 的对比

工具 特点 适用场景 示例操作
Matplotlib 功能强大,基础绘图工具 绘制各种类型的图形,如折线图、直方图等 绘制三角函数、IQ 分数直方图、最佳拟合线
Sklearn 机器学习库,提供内置数据集 机器学习任务,如分类、回归、聚类等 加载 Digits、Iris、Olivetti Faces 数据集
Seaborn 易于使用,扩展 Matplotlib 数据可视化,尤其是处理数据框 绘制内置数据集图形,设置绘图样式

5.5 Seaborn 使用流程

graph LR
    A[导入 Seaborn 库] --> B[加载数据集]
    B --> C[设置绘图样式和参数]
    C --> D[绘制图形]
    D --> E[添加标签和注释]
    E --> F[显示或保存图形]

6. 总结

本文介绍了从 Matplotlib 到 Seaborn 的数据可视化方法,以及 Sklearn 机器学习库中的一些内置数据集。

6.1 主要内容回顾

  • Matplotlib :可以绘制三角函数、直方图和最佳拟合线等多种图形,是数据可视化的基础工具。
  • Sklearn :支持大量机器学习算法,提供了如 Digits、Iris 和 Olivetti Faces 等内置数据集,方便进行数据处理和模型训练。
  • Seaborn :为 Matplotlib 提供了高级接口,更易于使用,尤其适合处理数据框的可视化。

6.2 学习建议

  • 对于初学者,建议先掌握 Matplotlib 的基本绘图方法,理解数据可视化的基础概念。
  • 在进行机器学习任务时,结合 Sklearn 的内置数据集和算法,提高数据分析和模型训练的能力。
  • 当需要快速、美观地可视化数据时,尝试使用 Seaborn,它可以简化绘图过程。

通过不断实践和学习,你将能够熟练运用这些工具进行数据可视化和机器学习任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值