数据可视化:从 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,它可以简化绘图过程。
通过不断实践和学习,你将能够熟练运用这些工具进行数据可视化和机器学习任务。
超级会员免费看
1972

被折叠的 条评论
为什么被折叠?



