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

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

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

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

步骤1 − 导入必要的库 _sklearn.datasets.make_spdmatrix, matplotlib和seaborn

步骤 2 − 创建 _make_spdmatrix() 的对象,并提供代表矩阵维数的 n_dim 参数的值。

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

步骤 4 − 利用seaborn库按颜色编码方案绘制矩阵。

示例

# 导入库
from sklearn.datasets import make_spd_matrix
from matplotlib import pyplot as plt
from matplotlib import style
import seaborn as sns

# 设置图形大小
plt.rcParams["figure.figsize"] = [7.16, 3.50]
plt.rcParams["figure.autolayout"] = True
plt.show()

# 创建并绘制维度为4的稀疏正定矩阵
style.use("ggplot")

spd = make_spd_matrix(n_dim=4, random_state=1)
sns.heatmap(data=spd, annot=True, cmap='rocket')
plt.show()

输出

它将产生以下输出

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

示例

检查上述生成的稀疏正定矩阵的值 −

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

生成稀疏正定矩阵

Python Scikit-learn提供了 _make_sparse_spdmatrix() 函数,我们可以利用它生成一个稀疏的对称正定(spd)矩阵。

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

步骤 1 − 导入必要的库 _sklearn.datasets.make_sparse_spdmatrix() 和matplotlib。

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

步骤 3 – 使用Numpy创建一个随机数组。这个数组应该与我们在 _sklearn.datasets.make_sparse_spdmatrix() 函数中提供的元素数量相同。

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

步骤 5 – 使用matplotlib构建一个三维图形来说明稀疏spd矩阵。

示例

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

# 导入库
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

# 创建稀疏spd矩阵
X= make_sparse_spd_matrix(dim=500, random_state=0)

# 创建一个随机数组'y'(它不是稀疏的)
from numpy import random
y=random.randint(2, size=(500))

# 将稀疏spd矩阵绘制成三维图形
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()

输出

它将产生以下输出 −

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程