解释每一行代码import numpy as np import matplotlib.pyplot as plt import seaborn as sns; sns.set() # 随机生成两类高斯分布的数据 from sklearn.datasets import make_blobs X, y = make_blobs(100, 2, centers=2, random_state=2, cluster_std=1.5) fig, ax = plt.subplots() ax.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='RdBu') ax.set_title('Two dimensional Bayes Model', size=14) xlim = (-8, 8) ylim = (-15, 5) xg = np.linspace(xlim[0], xlim[1], 60) yg = np.linspace(ylim[0], ylim[1], 40) xx, yy = np.meshgrid(xg, yg) Xgrid = np.vstack([xx.ravel(), yy.ravel()]).T for label, color in enumerate(['red', 'blue']): mask = (y == label) mu, std = X[mask].mean(0), X[mask].std(0) P = np.exp(-0.5 * (Xgrid - mu) ** 2 / std ** 2).prod(1) Pm = np.ma.masked_array(P, P < 0.03) ax.pcolorfast(xg, yg, Pm.reshape(xx.shape), alpha=0.5, cmap=color.title() + 's') ax.contour(xx, yy, P.reshape(xx.shape), levels=[0.01, 0.1, 0.5, 0.9], colors=color, alpha=0.2) ax.set(xlim=xlim, ylim=ylim)
时间: 2024-01-13 11:04:06 浏览: 362
import numpy as np import matplotlib.pyplot as plt import math
这段代码主要是用来生成两类高斯分布的数据,并在二维平面上进行可视化展示。具体解释如下:
- 第一行导入了numpy库并将其重命名为np,方便后面调用numpy库中的函数。
- 第二行导入了matplotlib.pyplot库并将其重命名为plt,方便后面调用pyplot库中的函数。
- 第三行导入了seaborn库并设置其样式为默认样式。
- 第五行使用make_blobs函数随机生成了100个二维样本数据,其中centers=2表示生成两类数据,cluster_std=1.5表示每个类别的方差都为1.5。
- 第七行创建了一个图形窗口和一个坐标轴对象ax。
- 第八行使用scatter函数将生成的数据在二维平面上绘制出来,并使用颜色映射cmap='RdBu'来表示类别的不同。
- 第九行设置图像的标题为'Two dimensional Bayes Model'。
- 第十一行和第十二行定义了x轴和y轴的范围。
- 第十四行和第十五行使用linspace函数在x轴和y轴上均匀地生成60个和40个点,并将这些点组成一个网格。
- 第十七行和第十八行使用vstack函数将网格中的所有点按列方向堆叠起来,形成一个二维数组Xgrid,其中每一行表示一个点的横纵坐标。
- 第二十行到第二十七行使用循环语句,对每个类别的数据分别计算其均值mu和标准差std,并计算出每个点在该类别中的概率密度P。同时,将概率密度小于0.03的点标记为无效点,并使用pcolorfast函数将这些点在二维平面上进行填充。最后,使用contour函数在二维平面上绘制出等高线图。
- 第二十九行设置坐标轴的范围为之前定义的范围。
阅读全文