如何使用Python Scikit-Learn生成对称正定矩阵?


Python Scikit-learn 提供了 `make_spd_matrix()` 函数,借助该函数我们可以生成随机对称正定矩阵。在本教程中,我们将使用 Python 中的 Scikit-learn (Sklearn) 生成对称正定矩阵和稀疏 spd 矩阵。

为此,我们可以遵循以下步骤:

步骤 1 − 导入必要的库:`sklearn.datasets.make_spd_matrix`、`matplotlib` 和 `seaborn`。

步骤 2 − 创建 `make_spd_matrix()` 的对象,并提供 `n_dim` 参数的值,该参数表示矩阵维度。

步骤 3 − 使用 matplotlib 库设置输出图形的大小。

步骤 4 − 使用 seaborn 库将矩阵绘制为颜色编码方案。

示例

# Importing libraries from sklearn.datasets import make_spd_matrix from matplotlib import pyplot as plt from matplotlib import style import seaborn as sns # Set the figure size plt.rcParams["figure.figsize"] = [7.16, 3.50] plt.rcParams["figure.autolayout"] = True plt.show() # Creating and plotting Sparse Positive-Definite matrix of dimension 4 style.use("ggplot") spd = make_spd_matrix(n_dim=4, random_state=1) sns.heatmap(data=spd, annot=True, cmap='rocket') plt.show()

输出

它将产生以下输出

示例

检查上面生成的稀疏正定矩阵的值:

import pandas as pd from sklearn.datasets import make_spd_matrix spd = make_spd_matrix(n_dim=4, random_state=1) print(pd.DataFrame(spd))

输出

它将产生以下输出

      0           1        2           3
0   1.214261  -1.693503   0.092278  -0.167397
1  -1.693503   3.331807  -0.230052   0.424357
2   0.092278  -0.230052   0.381256   0.119570
3  -0.167397   0.424357   0.119570   0.387159

生成稀疏 spd 矩阵

Python Scikit-learn 提供了 `make_sparse_spd_matrix()` 函数,借助该函数我们可以生成稀疏对称正定 (spd) 矩阵。

为了生成它并在三维空间中绘制它,我们可以遵循以下步骤:

步骤 1 − 导入必要的库:`sklearn.datasets.make_sparse_spd_matrix()` 和 `matplotlib`。

步骤 2 − 提供样本数量和其他参数。

步骤 3 − 使用 NumPy 创建一个随机数组。此数组应与在 `sklearn.datasets.make_sparse_spd_matrix()` 函数中提供的元素数量相同。

步骤 4 − 使用 matplotlib 库设置输出图形的大小和样式。

步骤 5 − 使用 matplotlib 构造一个 3D 图表以说明稀疏 spd 矩阵。

示例

在下面的示例中,我们将生成具有 500 个样本的稀疏 spd 矩阵。

# Importing libraries from sklearn.datasets import make_sparse_spd_matrix import numpy as np import matplotlib.pyplot as plt import matplotlib.style import matplotlib as mpl mpl.style.use('classic') from mpl_toolkits.mplot3d import Axes3D # Creating Sparse spd matrix X= make_sparse_spd_matrix(dim=500, random_state=0) #Creating a random array 'y'(it's not sparse) from numpy import random y=random.randint(2, size=(500)) # Plotting the sparse spd matrix in 3-dimensional figure_3D = plt.figure(figsize=(7.50,3.50)) plt.subplots_adjust(bottom=0.05, top=0.9, left=0.05, right=0.95) ax = figure_3D.add_subplot(111, projection='3d') ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y, cmap=plt.cm.rainbow) plt.title('Sparse spd matrix') plt.show()

输出

它将产生以下输出:


更新于:2022年10月4日

2K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告