利用高斯画2D核密度估计图python例子
时间: 2023-05-19 14:04:06 浏览: 64
可以使用Scikit-learn库中的KernelDensity类来实现高斯核密度估计。以下是一个简单的Python代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KernelDensity
# 生成随机数据
np.random.seed(0)
X = np.concatenate((np.random.normal(0, 1, 1000), np.random.normal(5, 1, 1000)))[:, np.newaxis]
# 创建KernelDensity对象
kde = KernelDensity(kernel='gaussian', bandwidth=0.5).fit(X)
# 生成密度估计值
x_plot = np.linspace(-5, 10, 1000)[:, np.newaxis]
log_dens = kde.score_samples(x_plot)
# 绘制密度估计图
plt.fill(x_plot[:, 0], np.exp(log_dens), fc='#AAAAFF')
plt.xlim(-5, 10)
plt.ylim(0, 0.4)
plt.show()
```
该代码将生成一个高斯核密度估计图,其中包含两个高斯分布的随机样本。您可以根据需要更改样本数据和带宽参数来调整估计结果。
相关问题
高斯核密度估计python
高斯核密度估计是一种非参数的概率密度估计方法,可以用于估计数据的概率密度分布。在Python中,可以使用scikit-learn库中的KernelDensity类来实现高斯核密度估计。
以下是一个基本示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KernelDensity
# 生成一些随机样本数据
np.random.seed(0)
sample = np.concatenate((np.random.normal(0, 1, 1000), np.random.normal(5, 0.5, 1000)))
# 创建并拟合高斯核密度估计模型
kde = KernelDensity(kernel='gaussian', bandwidth=0.5).fit(sample[:, None])
# 在指定范围内生成概率密度估计值
x = np.linspace(-5, 10, 1000)
log_density = kde.score_samples(x[:, None])
density = np.exp(log_density)
# 绘制概率密度曲线
plt.plot(x, density)
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.title('Gaussian Kernel Density Estimation')
plt.show()
```
这段代码首先生成了一些随机样本数据,然后使用KernelDensity类创建了一个高斯核密度估计模型。接下来,通过调用score_samples方法计算了在指定范围内的概率密度估计值,并使用exp函数将对数概率密度转换为实际概率密度。最后,使用matplotlib库将概率密度曲线绘制出来。
希望对你有帮助!如有任何问题,请随时提问。
核密度估计python例子
以下是一个使用Python进行核密度估计的简单示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
from sklearn.neighbors import KernelDensity
# 生成一些随机数据
np.random.seed(1234)
X = np.concatenate((np.random.normal(0, 1, 100), np.random.normal(5, 1, 100)))
# 创建一个核密度估计对象
kde = KernelDensity(kernel='gaussian', bandwidth=0.5)
# 将数据拟合到估计器中
kde.fit(X[:, None])
# 创建一些测试数据
x_test = np.linspace(-5, 10, 1000)[:, None]
# 使用估计器对测试数据进行预测
log_dens = kde.score_samples(x_test)
# 绘制结果
plt.fill_between(x_test[:, 0], np.exp(log_dens), alpha=0.5)
plt.plot(X, np.full_like(X, -0.01), '|k', markeredgewidth=1)
plt.ylim(-0.02, 0.22)
plt.show()
```
这个示例生成了一些随机数据,并使用高斯核函数和带宽为0.5的核密度估计器进行拟合。然后,使用估计器对新的测试数据进行预测,并将结果可视化。