-
边际分布(Marginal Distribution):指的是在联合分布中对某些变量进行统计总结得到的分布。在多维随机变量中,我们可能对其中的一个或几个变量感兴趣,而忽略其他变量,此时对这些感兴趣的变量进行概率分布统计,得到的就是边际分布。边际分布将一个多维随机变量的分布转化为单个变量的分布,有助于我们更容易地理解和分析特定变量的行为。
-
条件分布(Conditional Distribution):是在给定另一个或多个随机变量的取值情况下,某个随机变量的分布。在给定条件下,条件分布描述了随机变量之间的关系和依赖性。条件分布可以帮助我们对在特定条件下随机变量的行为进行预测和分析,提供了对于不同条件下事件发生概率的认识。
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
# 生成两个不同分布的随机数据
np.random.seed(0)
data1 = np.random.normal(loc=0, scale=1, size=1000)
data2 = np.random.normal(loc=2, scale=1.5, size=1000)
# 绘制两个分布的直方图
plt.hist(data1, bins=30, alpha=0.5, label='Data 1')
plt.hist(data2, bins=30, alpha=0.5, label='Data 2')
plt.legend()
plt.show()
# 对齐边际分布:将data2调整为与data1的均值和方差相同
data2_aligned = (data2 - np.mean(data2)) / np.std(data2) * np.std(data1) + np.mean(data1)
# 绘制对齐后的分布
plt.hist(data1, bins=30, alpha=0.5, label='Data 1')
plt.hist(data2_aligned, bins=30, alpha=0.5, label='Aligned Data 2')
plt.legend()
plt.show()
# 对齐条件分布:使用核密度估计(Kernel Density Estimation, KDE)来拟合两个数据集的条件分布
kde1 = stats.gaussian_kde(data1)
kde2 = stats.gaussian_kde(data2_aligned)
x = np.linspace(-3, 6, 100)
plt.plot(x, kde1(x), label='Data 1')
plt.plot(x, kde2(x), label='Aligned Data 2')
plt.legend()
plt.show()
这段代码可以使不同数据集近似同分布,可以用来做迁移学习