核密度估计python例子
时间: 2023-05-19 10:04:03 浏览: 276
以下是一个简单的核密度估计的 Python 代码示例:
```python
import numpy as np
from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
# 生成一些随机数据
data = np.random.normal(size=1000)
# 创建核密度估计对象
kde = gaussian_kde(data)
# 生成一些点来绘制估计的密度曲线
x = np.linspace(-5, 5, 100)
y = kde(x)
# 绘制密度曲线
plt.plot(x, y)
plt.show()
```
这个例子使用了 NumPy、SciPy 和 Matplotlib 库来生成随机数据、创建核密度估计对象并绘制密度曲线。
相关问题
利用高斯画2D核密度估计图python例子
可以使用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中,可以使用多种方法进行核密度估计,下面介绍两种常用的方法。
方法一:使用Scipy进行核密度估计
Scipy是Python中一个常用的科学计算库,其中包含了多种概率分布函数和统计函数。可以使用Scipy中的gaussian_kde函数进行核密度估计。下面是一个简单的例子:
```python
import numpy as np
from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
# 生成一组随机数据
data = np.random.normal(size=1000)
# 使用gaussian_kde函数进行核密度估计
kde = gaussian_kde(data)
# 生成测试点
x_test = np.linspace(-5, 5, 1000)
# 计算估计密度函数在测试点处的值
y = kde(x_test)
# 绘制频率分布直方图和估计密度函数曲线
plt.hist(data, bins=30, density=True, alpha=0.5)
plt.plot(x_test, y, 'r')
plt.show()
```
方法二:使用Sklearn进行核密度估计
Sklearn是Python中一个常用的机器学习库,其中包含了多种密度估计方法。可以使用Sklearn中的KernelDensity类进行核密度估计。下面是一个简单的例子:
```python
import numpy as np
from sklearn.neighbors import KernelDensity
import matplotlib.pyplot as plt
# 生成一组随机数据
data = np.random.normal(size=1000)
# 使用KernelDensity类进行核密度估计
kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(data[:, np.newaxis])
# 生成测试点
x_test = np.linspace(-5, 5, 1000)[:, np.newaxis]
# 计算估计密度函数在测试点处的值
y = np.exp(kde.score_samples(x_test))
# 绘制频率分布直方图和估计密度函数曲线
plt.hist(data, bins=30, density=True, alpha=0.5)
plt.plot(x_test, y, 'r')
plt.show()
```