一维高斯分布python绘图
时间: 2023-12-07 14:40:04 浏览: 110
以下是一维高斯分布的Python绘图代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成一维高斯分布数据
mean = 0
variance = 1
sigma = np.sqrt(variance)
x = np.linspace(-5, 5, 100)
y = np.exp(-(x - mean) ** 2 / (2 * variance)) / (sigma * np.sqrt(2 * np.pi))
# 绘制一维高斯分布图像
plt.plot(x, y)
plt.title('One-dimensional Gaussian Distribution')
plt.xlabel('x')
plt.ylabel('Probability density')
plt.show()
```
该代码首先使用numpy生成一维高斯分布数据,然后使用matplotlib绘制图像。其中,mean表示均值,variance表示方差,sigma表示标准差,x表示横坐标,y表示纵坐标,np.exp表示自然指数函数,np.sqrt表示平方根函数,np.pi表示圆周率。
相关问题
一维高斯混合模型python
一维高斯混合模型是一种用于对数据进行建模的统计模型,它假设数据是由多个高斯分布组成的混合物。在Python中,你可以使用scikit-learn库来实现一维高斯混合模型。
首先,你需要导入必要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
```
然后,你可以定义一维数据集:
```python
data = np.array([1, 1.5, 2, 3, 3.5, 4.5, 5, 6, 7, 7.5])
```
接下来,你可以使用GaussianMixture类来拟合一维高斯混合模型,并预测每个样本的概率密度:
```python
gmm = GaussianMixture(n_components=2)
gmm.fit(data.reshape(-1, 1))
probabilities = gmm.score_samples(data.reshape(-1, 1))
```
在上面的代码中,n_components参数指定了高斯混合模型的组成成分数量。你可以根据数据的特点来选择合适的值。
最后,你可以绘制数据分布和拟合的高斯混合模型:
```python
x = np.linspace(data.min(), data.max(), 100)
y = np.exp(gmm.score_samples(x.reshape(-1, 1)))
plt.hist(data, bins=10, density=True, alpha=0.5)
plt.plot(x, y, '-r')
plt.show()
```
以上代码中,我们使用hist函数绘制了数据的直方图,并使用plot函数绘制了拟合的高斯混合模型。你可以根据需要调整绘图的参数。
希望以上代码对你有帮助!如果你有任何其他问题,请随时提问。
python一维高斯滤波的演示代码
Python一维高斯滤波的演示代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
def gaussian_kernel(size, sigma=1):
"""生成一维高斯核"""
x = np.arange(-size//2 + 1, size//2 + 1)
kernel = np.exp(-(x/sigma)**2/2)
return kernel / np.sum(kernel)
def convolve(signal, kernel):
"""一维卷积"""
size = kernel.size
half = size // 2
signal = np.pad(signal, half, mode='edge')
conv = np.zeros_like(signal)
for i in range(half, signal.size-half):
conv[i] = np.sum(signal[i-half:i+half+1]*kernel)
return conv[half:-half]
# 生成原始信号
x = np.linspace(-10, 10, num=1000)
y = np.sin(x) + np.random.randn(x.size)/10
# 高斯滤波
kernel = gaussian_kernel(21, sigma=3)
y_filtered = convolve(y, kernel)
# 绘图
fig, ax = plt.subplots(2, 1, figsize=(8, 6))
ax.plot(x, y, label='Original')
ax.legend()
ax.plot(x, y_filtered, label='Filtered')
ax.legend()
plt.show()
```
在这个代码中,我们定义了两个函数:`gaussian_kernel`和`convolve`。`gaussian_kernel`用于生成一维高斯核,`convolve`用于对信号进行一维卷积。我们使用`numpy`和`matplotlib`库来实现代码的具体逻辑。
在这个示例中,我们首先生成了一个包含噪声的正弦信号,然后使用`gaussian_kernel`生成一个大小为21、标准差为3的高斯核,并对信号进行一维卷积,得到滤波后的信号。最后,我们将原始信号和滤波后的信号在同一张图上绘制出来,以便于对比。
阅读全文